diff options
author | Fritz Elfert <felfert@to.com> | 2001-02-06 01:01:46 +0000 |
---|---|---|
committer | Fritz Elfert <felfert@to.com> | 2001-02-06 01:01:46 +0000 |
commit | a9fe8f28a4a9aaf1d9b84dbc6907849ace87f66e (patch) | |
tree | 0dd290cdf04cfd17a4ab4d0eb86bcb48137a02cb /lib/rpcsfactory.cc | |
parent | a8787d39b2bf1851cdea64a5e0eccc2aff7f15de (diff) | |
download | plptools-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.cc | 27 |
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; |