summaryrefslogtreecommitdiff
path: root/TAO/tao/Synch_Reply_Dispatcher.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Synch_Reply_Dispatcher.h')
-rw-r--r--TAO/tao/Synch_Reply_Dispatcher.h48
1 files changed, 31 insertions, 17 deletions
diff --git a/TAO/tao/Synch_Reply_Dispatcher.h b/TAO/tao/Synch_Reply_Dispatcher.h
index 536096b2041..571948a9dbb 100644
--- a/TAO/tao/Synch_Reply_Dispatcher.h
+++ b/TAO/tao/Synch_Reply_Dispatcher.h
@@ -20,13 +20,13 @@
#include "ace/pre.h"
#include "tao/Reply_Dispatcher.h"
-#include "tao/LF_Event.h"
#include "tao/GIOP_Message_Version.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
+class TAO_Wait_Strategy;
class TAO_Pluggable_Reply_Params;
/**
@@ -35,9 +35,7 @@ class TAO_Pluggable_Reply_Params;
* @brief Reply dispatcher for Synchoronous Method Invocation (SMI)s.
*
*/
-class TAO_Export TAO_Synch_Reply_Dispatcher
- : public TAO_Reply_Dispatcher
- , public TAO_LF_Event
+class TAO_Export TAO_Synch_Reply_Dispatcher : public TAO_Reply_Dispatcher
{
public:
@@ -51,8 +49,16 @@ public:
/// Return the reply CDR.
TAO_InputCDR &reply_cdr (void);
+ /// A flag to check if the reply
+ int &reply_received (void);
+
virtual int dispatch_reply (TAO_Pluggable_Reply_Params &params);
+ // Commented for the time being - Bala
+ // virtual TAO_GIOP_Message_State *message_state (void);
+
+ virtual void dispatcher_bound (TAO_Transport *);
+
virtual void connection_closed (void);
protected:
@@ -60,26 +66,34 @@ protected:
IOP::ServiceContextList &reply_service_info_;
private:
- /// Cache the ORB Core pointer.
- TAO_ORB_Core *orb_core_;
+ // TAO_GIOP_Message_State message_state_;
+ // All the state required to receive the input...
+ // @@ Having members of type TAO_GIOP* indicates that we
+ // (Reply_despatcher) are aware of the underlying messaging
+ // protocol. But for the present let us close our eyes till we are
+ // able to iterate on a use case - Bala.
- /* @@todo: At some point of time we are going to get to a situation
- where TAO has huge stack sizes. Need to think on how we would
- deal with that. One idea would be to push these things on TSS as
- this is created by the thread on a per invocation basis. Post 1.2
- would be a nice time for that I guess
- */
+ /// Flag that indicates the reply has been received.
+ int reply_received_;
- /// The buffer that is used to initialise the data block
- char buf_[ACE_CDR::DEFAULT_BUFSIZE];
+ /// Cache the ORB Core pointer.
+ TAO_ORB_Core *orb_core_;
- /// datablock that is created on teh stack to initialise the CDR
- /// stream underneath.
- ACE_Data_Block db_;
+ /// Save the wait strategy to signal the waiting threads (if
+ /// appropriate).
+ TAO_Wait_Strategy *wait_strategy_;
/// CDR stream which has the reply information that needs to be
/// demarshalled by the stubs
TAO_InputCDR reply_cdr_;
+
+ /**
+ * The condition variable used to signal the waiting thread in the
+ * Leader/Followers model. The variable is acquired in the thread
+ * that binds the Reply_Dispatcher to its transport, and then passed
+ * to the Waiting_Strategy to do the signalling, if needed.
+ */
+ TAO_SYNCH_CONDITION *leader_follower_condition_variable_;
};
#include "ace/post.h"