diff options
Diffstat (limited to 'ACE/apps/drwho/SM_Client.cpp')
-rw-r--r-- | ACE/apps/drwho/SM_Client.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/ACE/apps/drwho/SM_Client.cpp b/ACE/apps/drwho/SM_Client.cpp new file mode 100644 index 00000000000..02e552c9af9 --- /dev/null +++ b/ACE/apps/drwho/SM_Client.cpp @@ -0,0 +1,75 @@ +// $Id$ + +#include "Options.h" +#include "PMC_All.h" +#include "PMC_Flo.h" +#include "PMC_Usr.h" +#include "PMC_Ruser.h" +#include "SM_Client.h" +#include "ace/Log_Msg.h" +#include "ace/OS_Memory.h" + +// Call-back function that invokes the appropriate decode function. + +int +SM_Client::demux (char *packet, + int &packet_length) +{ + if (this->pm_client->decode (packet, packet_length) < 0) + return -1; + else + return 1; +} + +// Call-back function that invokes the appropriate encode function. + +int +SM_Client::mux (char *packet, int &packet_length) +{ + switch (Options::protocol_type) + { + case Options::PROTO_USR: + ACE_NEW_RETURN (this->pm_client, + PMC_Usr (Options::user_name), + -1); + break; + case Options::PROTO_ALL: + ACE_NEW_RETURN (this->pm_client, + PMC_All, + -1); + break; + case Options::PROTO_FLO: + ACE_NEW_RETURN (this->pm_client, + PMC_Flo, + -1); + break; + case Options::PROTO_RUSER: + ACE_NEW_RETURN (this->pm_client, + PMC_Ruser, + -1); + break; + default: + ACE_DEBUG ((LM_DEBUG, + "%s: bad protocol\n", + Options::program_name)); + return -1; + } + + if (this->pm_client->encode (packet, packet_length) < 0) + return -1; + return 1; +} + +SM_Client::SM_Client (void) +{ +} + +SM_Client::~SM_Client (void) +{ +} + +void +SM_Client::process (void) +{ + this->pm_client->process (); +} |