aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rpcsfactory.cc
diff options
context:
space:
mode:
authorFritz Elfert <felfert@to.com>2001-02-06 01:01:46 +0000
committerFritz Elfert <felfert@to.com>2001-02-06 01:01:46 +0000
commita9fe8f28a4a9aaf1d9b84dbc6907849ace87f66e (patch)
tree0dd290cdf04cfd17a4ab4d0eb86bcb48137a02cb /lib/rpcsfactory.cc
parenta8787d39b2bf1851cdea64a5e0eccc2aff7f15de (diff)
downloadplptools-a9fe8f28a4a9aaf1d9b84dbc6907849ace87f66e.tar.gz
plptools-a9fe8f28a4a9aaf1d9b84dbc6907849ace87f66e.tar.bz2
plptools-a9fe8f28a4a9aaf1d9b84dbc6907849ace87f66e.zip
- Added KDE2 PropsDialog Plugin (incomplete)
- Fixed some KDE related autoconf stuff - Added PlpDrive class for returning results from rfsv:devinfo - Added auto-watch in ppsocket and finally got rid of the nasty SIGPIPE bug. Now it's no more necessary to ignore SIGPIPE in applications. - Made constructors of rfsv16, rfsv32, rpcs16 and rpcs32 private to enforce use of the factories. - Removed error output in the factories and replaced that by error codes which can be retrieved and evaluated by an application.
Diffstat (limited to 'lib/rpcsfactory.cc')
-rw-r--r--lib/rpcsfactory.cc27
1 files changed, 21 insertions, 6 deletions
diff --git a/lib/rpcsfactory.cc b/lib/rpcsfactory.cc
index 091f12a..bd3b77d 100644
--- a/lib/rpcsfactory.cc
+++ b/lib/rpcsfactory.cc
@@ -36,8 +36,20 @@
#include "bufferstore.h"
#include "ppsocket.h"
+#include "Enum.h"
+
+ENUM_DEFINITION(rpcsfactory::errs, rpcsfactory::FACERR_NONE) {
+ stringRep.add(rpcsfactory::FACERR_NONE, "no error");
+ stringRep.add(rpcsfactory::FACERR_COULD_NOT_SEND, "could not send version request");
+ stringRep.add(rpcsfactory::FACERR_AGAIN, "try again");
+ stringRep.add(rpcsfactory::FACERR_NOPSION, "no psion connected");
+ stringRep.add(rpcsfactory::FACERR_PROTVERSION, "wrong protocol version");
+ stringRep.add(rpcsfactory::FACERR_NORESPONSE, "no response from ncpd");
+}
+
rpcsfactory::rpcsfactory(ppsocket *_skt)
{
+ err = FACERR_NONE;
skt = _skt;
}
@@ -49,15 +61,18 @@ rpcs * rpcsfactory::create(bool reconnect)
// so we can instantiate the correct rpcs protocol handler for the
// caller. We announce ourselves to the NCP daemon, and the relevant
// rpcs module will also announce itself.
+
bufferStore a;
- a.init();
+
+ err = FACERR_NONE;
a.addStringT("NCP$INFO");
if (!skt->sendBufferStore(a)) {
if (!reconnect)
- cerr << "rpcsfactory::create couldn't send version request" << endl;
+ err = FACERR_COULD_NOT_SEND;
else {
skt->closeSocket();
skt->reconnect();
+ err = FACERR_AGAIN;
}
return NULL;
}
@@ -71,13 +86,13 @@ rpcs * rpcsfactory::create(bool reconnect)
if ((a.getLen() > 8) && !strncmp(a.getString(), "No Psion", 8)) {
skt->closeSocket();
skt->reconnect();
+ err = FACERR_NOPSION;
return NULL;
}
// Invalid protocol version
- cerr << "rpcsfactory::create received odd protocol version from ncpd! (" << a << ")" << endl;
- } else {
- cerr << "rpcsfactory::create sent, response not 1" << endl;
- }
+ err = FACERR_PROTVERSION;
+ } else
+ err = FACERR_NORESPONSE;
// No message returned.
return NULL;