diff options
Diffstat (limited to 'ACE/apps/JAWS3/small/SS_Service_Handler.cpp')
-rw-r--r-- | ACE/apps/JAWS3/small/SS_Service_Handler.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/ACE/apps/JAWS3/small/SS_Service_Handler.cpp b/ACE/apps/JAWS3/small/SS_Service_Handler.cpp new file mode 100644 index 00000000000..627996a7b07 --- /dev/null +++ b/ACE/apps/JAWS3/small/SS_Service_Handler.cpp @@ -0,0 +1,67 @@ +// $Id$ + +#define ACE_BUILD_SVC_DLL + +#include "ace/OS.h" +#include "ace/Get_Opt.h" + +#include "jaws3/Concurrency.h" + +#include "SS_Service_Handler.h" +#include "SS_State_READ.h" +#include "SS_Data.h" + +TeraSS_Service_Handler::TeraSS_Service_Handler (void) + : JAWS_Protocol_Handler (TeraSS_State_READ::instance (), & this->data_) + , data_ (this) +{ +} + +int +TeraSS_Service_Handler::open (void *) +{ + int result = JAWS_Concurrency::instance ()->putq (this); + if (result < 0) + return -1; + + return 0; +} + +int +TeraSS_Service_Handler::close (unsigned long) +{ + delete this; + return 0; +} + +int +TeraSS_Acceptor::init (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt opt (argc, argv, "p:"); + + unsigned short p = 0; + + int c; + while ((c = opt ()) != -1) + switch (c) + { + case 'p': + p = (unsigned short) ACE_OS::atoi (opt.optarg); + break; + default: + break; + } + + if (p == 0) + p = 5555; + + if (this->open (ACE_INET_Addr (p)) == -1) + { + ACE_DEBUG ((LM_DEBUG, "%p\n", "ACE_Acceptor::open")); + return -1; + } + + return 0; +} + +ACE_SVC_FACTORY_DEFINE (TeraSS_Acceptor) |