3 //=============================================================================
5 * @file Synch_Reply_Dispatcher.h
7 * Dispatch the reply appropriately.
9 * @author Alexander Babu Arulanthu <alex@cs.wustl.edu>
11 //=============================================================================
13 #ifndef TAO_SYNCH_REPLY_DISPATCHER_H
14 #define TAO_SYNCH_REPLY_DISPATCHER_H
16 #include /**/ "ace/pre.h"
18 #include "tao/Reply_Dispatcher.h"
20 #if !defined (ACE_LACKS_PRAGMA_ONCE)
22 #endif /* ACE_LACKS_PRAGMA_ONCE */
24 #include "tao/LF_Invocation_Event.h"
27 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
29 class TAO_Pluggable_Reply_Params
;
33 class ServiceContextList
;
37 * @class TAO_Synch_Reply_Dispatcher
39 * @brief Reply dispatcher for Synchronous Method Invocation (SMI)s.
41 class TAO_Export TAO_Synch_Reply_Dispatcher
42 : public TAO_Reply_Dispatcher
43 , public TAO_LF_Invocation_Event
47 TAO_Synch_Reply_Dispatcher (TAO_ORB_Core
*orb_core
,
48 IOP::ServiceContextList
&sc
);
51 virtual ~TAO_Synch_Reply_Dispatcher ();
53 /// Return the reply CDR.
54 TAO_InputCDR
&reply_cdr ();
56 virtual int dispatch_reply (TAO_Pluggable_Reply_Params
¶ms
);
58 virtual void connection_closed ();
60 virtual void reply_timed_out ();
63 /// The service context list
64 IOP::ServiceContextList
&reply_service_info_
;
67 /// Cache the ORB Core pointer.
68 TAO_ORB_Core
*orb_core_
;
70 /* @todo At some point of time we are going to get to a situation
71 where TAO has huge stack sizes. Need to think on how we would
72 deal with that. One idea would be to push these things on TSS as
73 this is created by the thread on a per invocation basis. Post 1.2
74 would be a nice time for that I guess
77 /// The buffer that is used to initialise the data block
78 char buf_
[ACE_CDR::DEFAULT_BUFSIZE
];
80 /// Datablock that is created on the stack to initialise the CDR
81 /// stream underneath.
84 /// CDR stream which has the reply information that needs to be
85 /// demarshalled by the stubs
86 TAO_InputCDR reply_cdr_
;
89 TAO_END_VERSIONED_NAMESPACE_DECL
91 #include /**/ "ace/post.h"
93 #endif /* TAO_REPLY_DISPATCHER_H */