summaryrefslogtreecommitdiff
path: root/TAO/tao/Transport_Connector.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Transport_Connector.h')
-rw-r--r--TAO/tao/Transport_Connector.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/TAO/tao/Transport_Connector.h b/TAO/tao/Transport_Connector.h
index e29d0b251b3..f457ee5ec9a 100644
--- a/TAO/tao/Transport_Connector.h
+++ b/TAO/tao/Transport_Connector.h
@@ -41,6 +41,7 @@ class TAO_ORB_Core;
class TAO_Connect_Strategy;
class TAO_Transport;
class TAO_Connection_Handler;
+class TAO_LF_Multi_Event;
namespace TAO
{
@@ -121,6 +122,14 @@ public:
ACE_Time_Value *timeout
ACE_ENV_ARG_DECL);
+ /// A variation on connect that will try simultanious connections
+ /// on all endpoints listed in the desc.
+ virtual TAO_Transport* parallel_connect (
+ TAO::Profile_Transport_Resolver *r,
+ TAO_Transport_Descriptor_Interface *desc,
+ ACE_Time_Value *timeout
+ ACE_ENV_ARG_DECL);
+
/// Create a profile for this protocol and initialize it based on the
/// encapsulation in @a cdr
virtual TAO_Profile *create_profile (
@@ -137,6 +146,10 @@ public:
//@@ TAO_CONNECTOR_SPL_PUBLIC_METHODS_ADD_HOOK
protected:
+ /// A flag indicating the actual connector supports parallel connection
+ /// attempts. The base implementation alwayse returns 0. Override to return
+ /// non-zero if parallel connection attempts may be tried.
+ virtual int supports_parallel_connects (void) const;
/// Create a profile with a given endpoint.
virtual TAO_Profile *make_profile (ACE_ENV_SINGLE_ARG_DECL) = 0;
@@ -151,6 +164,13 @@ protected:
TAO_Transport_Descriptor_Interface &desc,
ACE_Time_Value *timeout) = 0;
+ /// Make a connection using - not a pure virtual since not all
+ /// protocols support this.
+ virtual TAO_Transport* make_parallel_connection (
+ TAO::Profile_Transport_Resolver *r,
+ TAO_Transport_Descriptor_Interface &desc,
+ ACE_Time_Value *timeout);
+
/// Cancel the passed cvs handler from the connector
virtual int cancel_svc_handler (
TAO_Connection_Handler *svc_handler) = 0;
@@ -175,6 +195,17 @@ protected:
TAO_Transport *&transport,
ACE_Time_Value *timeout);
+ /// In the case of a parallel connection attempt, we take an array of
+ /// transports, and wait on any of them. When the first one completes,
+ /// the rest are closed.
+ virtual bool wait_for_connection_completion(
+ TAO::Profile_Transport_Resolver *r,
+ TAO_Transport *&the_winner,
+ TAO_Transport **transport,
+ unsigned int count,
+ TAO_LF_Multi_Event *mev,
+ ACE_Time_Value *timeout);
+
/// Set the ORB Core pointer
void orb_core (TAO_ORB_Core *orb_core);