diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | ace/Connector.cpp | 49 | ||||
-rw-r--r-- | 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 <irfan@oomworks.com> + + * 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 <irfan@oomworks.com> * 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 @@ -679,6 +679,55 @@ ACE_Connector<SVC_HANDLER, ACE_PEER_CONNECTOR_2>::close (void) } template <class SVC_HANDLER, ACE_PEER_CONNECTOR_1> int +ACE_Connector<SVC_HANDLER, ACE_PEER_CONNECTOR_2>::fini (void) +{ + ACE_TRACE ("ACE_Connector<SVC_HANDLER, ACE_PEER_CONNECTOR_2>::fini"); + + return this->close (); +} + +// Hook called by the explicit dynamic linking facility. + +template <class SVC_HANDLER, ACE_PEER_CONNECTOR_1> int +ACE_Connector<SVC_HANDLER, ACE_PEER_CONNECTOR_2>::init (int, ACE_TCHAR *[]) +{ + ACE_TRACE ("ACE_Connector<SVC_HANDLER, ACE_PEER_CONNECTOR_2>::init"); + return -1; +} + +template <class SVC_HANDLER, ACE_PEER_CONNECTOR_1> int +ACE_Connector<SVC_HANDLER, ACE_PEER_CONNECTOR_2>::suspend (void) +{ + ACE_TRACE ("ACE_Connector<SVC_HANDLER, ACE_PEER_CONNECTOR_2>::suspend"); + return -1; +} + +template <class SVC_HANDLER, ACE_PEER_CONNECTOR_1> int +ACE_Connector<SVC_HANDLER, ACE_PEER_CONNECTOR_2>::resume (void) +{ + ACE_TRACE ("ACE_Connector<SVC_HANDLER, ACE_PEER_CONNECTOR_2>::resume"); + return -1; +} + +template <class SVC_HANDLER, ACE_PEER_CONNECTOR_1> int +ACE_Connector<SVC_HANDLER, ACE_PEER_CONNECTOR_2>::info (ACE_TCHAR **strp, size_t length) const +{ + ACE_TRACE ("ACE_Connector<SVC_HANDLER, ACE_PEER_CONNECTOR_2>::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 <class SVC_HANDLER, ACE_PEER_CONNECTOR_1> int ACE_Strategy_Connector<SVC_HANDLER, ACE_PEER_CONNECTOR_2>::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 SVC_HANDLER, ACE_PEER_CONNECTOR_1> -class ACE_Connector : public ACE_Connector_Base<SVC_HANDLER> +class ACE_Connector : public ACE_Connector_Base<SVC_HANDLER>, public ACE_Service_Object { public: @@ -264,7 +264,6 @@ public: protected: // = Helpful typedefs. - typedef ACE_NonBlocking_Connect_Handler<SVC_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 <handle_close> to shutdown the Connector gracefully. + virtual int fini (void); + + /// Default version returns address info in <buf>. + 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_; |