summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-05-20 23:42:15 +0000
committerirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-05-20 23:42:15 +0000
commit30355132c85410ad529eceeb1a2bfb0c50425e2e (patch)
tree96306dd2a0850213290def49c23bb9159b3fd73a
parent3ef716520e3ac42a8d569b306528e0a0b0fe74db (diff)
downloadATCD-Reactor_RefCount.tar.gz
ChangeLogTag: Tue May 20 18:33:07 2003 Irfan Pyarali <irfan@oomworks.com>Reactor_RefCount
-rw-r--r--ChangeLog11
-rw-r--r--ace/Connector.cpp49
-rw-r--r--ace/Connector.h25
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_;