/* ** $Id$ ** ** Copyright 2002 Addison Wesley. All Rights Reserved. */ #ifndef _REACTOR_LOGGING_SERVER_ADAPTER_C #define _REACTOR_LOGGING_SERVER_ADAPTER_C #include "ace/ACE.h" #include "ace/Auto_Ptr.h" #include "ace/INET_Addr.h" #include "Reactor_Logging_Server_Adapter.h" #include "ace/OS_NS_string.h" #include "ace/OS_NS_stdio.h" template int Reactor_Logging_Server_Adapter::init (int argc, ACE_TCHAR *argv[]) { int i; char **array = 0; ACE_NEW_RETURN (array, char*[argc], -1); ACE_Auto_Array_Ptr char_argv (array); for (i = 0; i < argc; ++i) char_argv[i] = ACE::strnew (ACE_TEXT_TO_CHAR_IN (argv[i])); ACE_NEW_NORETURN (server_, Reactor_Logging_Server (i, char_argv.get (), ACE_Reactor::instance ())); for (i = 0; i < argc; ++i) ACE::strdelete (char_argv[i]); return server_ == 0 ? -1 : 0; } template int Reactor_Logging_Server_Adapter::fini () { server_->handle_close (); server_ = 0; return 0; } template int Reactor_Logging_Server_Adapter::info (ACE_TCHAR **bufferp, size_t length) const { ACE_INET_Addr local_addr; server_->acceptor ().get_local_addr (local_addr); ACE_TCHAR buf[BUFSIZ]; ACE_OS::sprintf (buf, ACE_TEXT ("%hu"), local_addr.get_port_number ()); ACE_OS::strcat (buf, ACE_TEXT ("/tcp # Reactor-based logging server\n")); if (*bufferp == 0) *bufferp = ACE::strnew (buf); else ACE_OS::strncpy (*bufferp, buf, length); return ACE_OS::strlen (*bufferp); } template int Reactor_Logging_Server_Adapter::suspend () { return server_->reactor ()->suspend_handler (server_); } template int Reactor_Logging_Server_Adapter::resume () { return server_->reactor ()->resume_handler (server_); } #endif /* _REACTOR_LOGGING_SERVER_ADAPTER_C */