From 30355132c85410ad529eceeb1a2bfb0c50425e2e Mon Sep 17 00:00:00 2001 From: irfan Date: Tue, 20 May 2003 23:42:15 +0000 Subject: ChangeLogTag: Tue May 20 18:33:07 2003 Irfan Pyarali --- ChangeLog | 11 +++++++++++ ace/Connector.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ ace/Connector.h | 25 ++++++++++++++++++++++--- 3 files changed, 82 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 35d6b189055..e0ce23fa4fe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Tue May 20 18:33:07 2003 Irfan Pyarali + + * ace/Connector: + + Reverted the Connector to inherit from ACE_Service_Object again. + Even though the Connector no longer registers with the Reactor, + it still needs to inherit from ACE_Service_Object so that it can + be used through the Service Configurator primarily for dynamic + linking. The resume(), suspend(), and init() no-ops, and fini() + and info() were restated. + Fri May 16 16:34:35 2003 Irfan Pyarali * tests/MT_Reference_Counted_Event_Handler_Test.cpp: diff --git a/ace/Connector.cpp b/ace/Connector.cpp index a6cb9b0ea17..abacf6c061e 100644 --- a/ace/Connector.cpp +++ b/ace/Connector.cpp @@ -678,6 +678,55 @@ ACE_Connector::close (void) return 0; } +template int +ACE_Connector::fini (void) +{ + ACE_TRACE ("ACE_Connector::fini"); + + return this->close (); +} + +// Hook called by the explicit dynamic linking facility. + +template int +ACE_Connector::init (int, ACE_TCHAR *[]) +{ + ACE_TRACE ("ACE_Connector::init"); + return -1; +} + +template int +ACE_Connector::suspend (void) +{ + ACE_TRACE ("ACE_Connector::suspend"); + return -1; +} + +template int +ACE_Connector::resume (void) +{ + ACE_TRACE ("ACE_Connector::resume"); + return -1; +} + +template int +ACE_Connector::info (ACE_TCHAR **strp, size_t length) const +{ + ACE_TRACE ("ACE_Connector::info"); + ACE_TCHAR buf[BUFSIZ]; + + ACE_OS::sprintf (buf, + ACE_LIB_TEXT ("%s\t %s"), + ACE_LIB_TEXT ("ACE_Connector"), + ACE_LIB_TEXT ("# connector factory\n")); + + if (*strp == 0 && (*strp = ACE_OS::strdup (buf)) == 0) + return -1; + else + ACE_OS::strsncpy (*strp, buf, length); + return ACE_static_cast (int, ACE_OS::strlen (buf)); +} + template int ACE_Strategy_Connector::open (ACE_Reactor *r, int flags) diff --git a/ace/Connector.h b/ace/Connector.h index 9961cef2d93..42f6204b118 100644 --- a/ace/Connector.h +++ b/ace/Connector.h @@ -15,7 +15,7 @@ #include "ace/pre.h" -#include "ace/Event_Handler.h" +#include "ace/Service_Object.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once @@ -135,7 +135,7 @@ private: * Further, non-blocking connects support timeouts. */ template -class ACE_Connector : public ACE_Connector_Base +class ACE_Connector : public ACE_Connector_Base, public ACE_Service_Object { public: @@ -264,7 +264,6 @@ public: protected: // = Helpful typedefs. - typedef ACE_NonBlocking_Connect_Handler NBCH; // = The following two methods define the Connector's strategies for @@ -332,6 +331,26 @@ protected: /// progress. ACE_Handle_Set &non_blocking_handles (void); + // = Dynamic linking hooks. + /// Default version does no work and returns -1. Must be overloaded + /// by application developer to do anything meaningful. + virtual int init (int argc, ACE_TCHAR *argv[]); + + /// Calls to shutdown the Connector gracefully. + virtual int fini (void); + + /// Default version returns address info in . + virtual int info (ACE_TCHAR **, size_t) const; + + // = Service management hooks. + /// Default version does no work and returns -1. Must be overloaded + /// by application developer to do anything meaningful. + virtual int suspend (void); + + /// Default version does no work and returns -1. Must be overloaded + /// by application developer to do anything meaningful. + virtual int resume (void); + private: /// This is the peer connector factory. ACE_PEER_CONNECTOR connector_; -- cgit v1.2.1