summaryrefslogtreecommitdiff
path: root/TAO/tao/Wait_Strategy.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Wait_Strategy.h')
-rw-r--r--TAO/tao/Wait_Strategy.h34
1 files changed, 32 insertions, 2 deletions
diff --git a/TAO/tao/Wait_Strategy.h b/TAO/tao/Wait_Strategy.h
index a9bf3d29618..c00e64c11a8 100644
--- a/TAO/tao/Wait_Strategy.h
+++ b/TAO/tao/Wait_Strategy.h
@@ -23,7 +23,6 @@
class TAO_ORB_Core;
class TAO_Transport;
-class TAO_Synch_Reply_Dispatcher;
/**
* @class TAO_Wait_Strategy
@@ -52,7 +51,7 @@ public:
/// Base class virtual method. Wait till the <reply_received> flag is
/// true or the time expires.
virtual int wait (ACE_Time_Value *max_wait_time,
- TAO_Synch_Reply_Dispatcher &rd) = 0;
+ int &reply_received) = 0;
/// Register the handler needs with the reactor provided that it makes
/// sense for the strategy.
@@ -62,6 +61,37 @@ public:
/// the socket on which it is waiting to non-blocking mode or not.
virtual int non_blocking (void) = 0;
+ /**
+ * Return the TSS leader follower condition variable used in the
+ * Wait Strategy. Muxed Leader Follower implementation returns a
+ * valid condition variable, others return 0.
+ * The condition variable is acquired by the Reply_Dispatcher (when
+ * needed) in the thread that binds it to the right Transport.
+ * Later (when the reply is finally received) the Reply_Dispatcher
+ * passes this condition variable back to Waiting_Strategy, that can
+ * then signal the waiting thread if needed.
+ */
+ virtual TAO_SYNCH_CONDITION *leader_follower_condition_variable (void);
+
+ /**
+ * This is the callback used by the Reply_Dispatcher to inform the
+ * Waiting_Strategy that a reply has been completely received, that
+ * it was already stored in the right place, and that the condition
+ * variable should be signalled if needed.
+ * The Waiting_Strategy must set the reply received flag, using
+ * whatever locks it needs.
+ */
+ virtual int reply_dispatched (int &reply_received_flag,
+ TAO_SYNCH_CONDITION *);
+
+ /**
+ * The connection has been closed by the lower level components in
+ * the ORB.
+ * The wait has finished and must result in an error.
+ */
+ virtual void connection_closed (int &reply_received_flag,
+ TAO_SYNCH_CONDITION*);
+
/// Get/Set method for the flag
int is_registered (void);
void is_registered (int flag);