summaryrefslogtreecommitdiff
path: root/TAO/tao/SHMIOP_Connect.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/SHMIOP_Connect.h')
-rw-r--r--TAO/tao/SHMIOP_Connect.h156
1 files changed, 69 insertions, 87 deletions
diff --git a/TAO/tao/SHMIOP_Connect.h b/TAO/tao/SHMIOP_Connect.h
index a21f3a27217..7e0c4bde1ae 100644
--- a/TAO/tao/SHMIOP_Connect.h
+++ b/TAO/tao/SHMIOP_Connect.h
@@ -28,91 +28,15 @@
#include "ace/Reactor.h"
#include "ace/Acceptor.h"
-#include "ace/MEM_Acceptor.h"
-#include "ace/Synch.h"
-#include "ace/Svc_Handler.h"
-
#include "tao/corbafwd.h"
#include "tao/Wait_Strategy.h"
-
+#include "tao/Connection_Handler.h"
#include "tao/SHMIOP_Transport.h"
-// Forward Decls
-class TAO_ORB_Core;
-class TAO_ORB_Core_TSS_Resources;
-
-
-typedef ACE_Svc_Handler<ACE_MEM_STREAM, ACE_NULL_SYNCH>
- TAO_SHMIOP_SVC_HANDLER;
-
// ****************************************************************
-class TAO_SHMIOP_Handler_Base : public TAO_SHMIOP_SVC_HANDLER
-{
-public:
- TAO_SHMIOP_Handler_Base (ACE_Thread_Manager *t);
- TAO_SHMIOP_Handler_Base (TAO_ORB_Core *orb_core);
-
- virtual TAO_Transport *transport (void) = 0;
-};
-
-class TAO_Export TAO_SHMIOP_Client_Connection_Handler : public TAO_SHMIOP_Handler_Base
-{
- // = TITLE
- // <Svc_Handler> used on the client side and returned by the
- // <TAO_CONNECTOR>.
-public:
- // = Intialization method.
- TAO_SHMIOP_Client_Connection_Handler (ACE_Thread_Manager *t = 0,
- TAO_ORB_Core* orb_core = 0,
- CORBA::Boolean flag = 0);
-
- virtual ~TAO_SHMIOP_Client_Connection_Handler (void);
-
- // = <Connector> hook.
- virtual int open (void *);
- // Activation template method.
-
- // = Event Handler overloads
-
- virtual int handle_input (ACE_HANDLE = ACE_INVALID_HANDLE);
- // Called when a response from a twoway invocation is available.
-
- virtual int handle_timeout (const ACE_Time_Value &tv,
- const void *arg = 0);
- // Called when buffering timer expires.
-
- virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE,
- ACE_Reactor_Mask = ACE_Event_Handler::NULL_MASK);
- // Perform appropriate closing.
-
- virtual int handle_close_i (ACE_HANDLE = ACE_INVALID_HANDLE,
- ACE_Reactor_Mask = ACE_Event_Handler::NULL_MASK);
- // Perform appropriate closing but without grabbing any locks.
-
- virtual int close (u_long flags = 0);
- // Object termination hook.
-
- virtual TAO_Transport *transport (void);
- // Return the transport objects
-
-protected:
- int handle_cleanup (void);
- // This method deregisters the handler from the reactor and closes it.
-
- TAO_SHMIOP_Client_Transport transport_;
- // Reference to the transport object, it is owned by this class.
-
- TAO_ORB_Core *orb_core_;
- // Cached ORB Core.
-
- CORBA::Boolean lite_flag_;
- // Are we using lite?
-};
-
-// ****************************************************************
-
-class TAO_Export TAO_SHMIOP_Server_Connection_Handler : public TAO_SHMIOP_Handler_Base
+class TAO_Export TAO_SHMIOP_Server_Connection_Handler : public TAO_SHMIOP_SVC_HANDLER,
+ public TAO_Connection_Handler
{
// = TITLE
// Handles requests on a single connection in a server.
@@ -151,6 +75,9 @@ public:
TAO_Transport *transport (void);
+ virtual ACE_HANDLE fetch_handle (void);
+ // Return the underlying handle
+
protected:
// = Event Handler overloads
@@ -175,22 +102,77 @@ protected:
TAO_Pluggable_Messaging *acceptor_factory_;
// Messaging acceptor factory
- TAO_ORB_Core *orb_core_;
- // Cached ORB Core.
-
- TAO_ORB_Core_TSS_Resources *tss_resources_;
- // Cached tss resources of the ORB that activated this object.
-
u_long refcount_;
// Reference count. It is used to count nested upcalls on this
// svc_handler i.e., the connection can close during nested upcalls,
// you should not delete the svc_handler until the stack unwinds
// from the nested upcalls.
+};
+
+// ****************************************************************
+
+class TAO_Export TAO_SHMIOP_Client_Connection_Handler : public TAO_SHMIOP_SVC_HANDLER,
+ public TAO_Connection_Handler
+{
+ // = TITLE
+ // <Svc_Handler> used on the client side and returned by the
+ // <TAO_CONNECTOR>.
+public:
+
+ // = Intialization method.
+ TAO_SHMIOP_Client_Connection_Handler (ACE_Thread_Manager *t = 0,
+ TAO_ORB_Core* orb_core = 0,
+ CORBA::Boolean flag = 0);
+
+ virtual ~TAO_SHMIOP_Client_Connection_Handler (void);
- CORBA::Boolean lite_flag_;
- // Should we use GIOP or GIOPlite
+ // = <Connector> hook.
+ virtual int open (void *);
+ // Activation template method.
+
+ // = Event Handler overloads
+
+ virtual int handle_input (ACE_HANDLE = ACE_INVALID_HANDLE);
+ // Called when a response from a twoway invocation is available.
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg = 0);
+ // Called when buffering timer expires.
+
+ virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE,
+ ACE_Reactor_Mask = ACE_Event_Handler::NULL_MASK);
+ // Perform appropriate closing.
+
+ virtual int handle_close_i (ACE_HANDLE = ACE_INVALID_HANDLE,
+ ACE_Reactor_Mask = ACE_Event_Handler::NULL_MASK);
+ // Perform appropriate closing but without grabbing any locks.
+
+ virtual int close (u_long flags = 0);
+ // Object termination hook.
+
+ virtual TAO_Transport *transport (void);
+ // Return the transport objects
+
+ virtual ACE_HANDLE fetch_handle (void);
+ // Return the underlying handle
+
+protected:
+ int handle_cleanup (void);
+ // This method deregisters the handler from the reactor and closes it.
+
+ TAO_SHMIOP_Client_Transport transport_;
+ // Reference to the transport object, it is owned by this class.
+
+private:
+ virtual int handle_input_i (ACE_HANDLE = ACE_INVALID_HANDLE,
+ ACE_Time_Value *max_wait_time = 0);
+ // Will not be called at all. As a matter of fact should not be
+ // called. This is just to override the pure virtual function in the
+ // TAO_Connection_Handler class
};
+
+
#if defined (__ACE_INLINE__)
#include "tao/SHMIOP_Connect.i"
#endif /* __ACE_INLINE__ */