summaryrefslogtreecommitdiff
path: root/TAO/tao/DynamicInterface/DII_Invocation.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/DynamicInterface/DII_Invocation.h')
-rw-r--r--TAO/tao/DynamicInterface/DII_Invocation.h52
1 files changed, 42 insertions, 10 deletions
diff --git a/TAO/tao/DynamicInterface/DII_Invocation.h b/TAO/tao/DynamicInterface/DII_Invocation.h
index 11bb74a18dc..373d6058500 100644
--- a/TAO/tao/DynamicInterface/DII_Invocation.h
+++ b/TAO/tao/DynamicInterface/DII_Invocation.h
@@ -31,6 +31,7 @@
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
class TAO_DII_Deferred_Reply_Dispatcher;
+class TAO_DII_Asynch_Reply_Dispatcher;
namespace Dynamic
{
@@ -53,15 +54,12 @@ namespace TAO
bool response_expected = true);
#if TAO_HAS_INTERCEPTORS ==1
- virtual Dynamic::ParameterList *arguments (void)
- ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual Dynamic::ParameterList *arguments (void);
#endif /*TAO_HAS_INTERCEPTORS == 1*/
- Invocation_Status remote_invocation (ACE_Time_Value *max_wait_time)
- ACE_THROW_SPEC ((CORBA::Exception));
+ Invocation_Status remote_invocation (ACE_Time_Value *max_wait_time);
- virtual Invocation_Status handle_user_exception (TAO_InputCDR &cdr)
- ACE_THROW_SPEC ((CORBA::Exception));
+ virtual Invocation_Status handle_user_exception (TAO_InputCDR &cdr);
private:
CORBA::ExceptionList *excp_list_;
@@ -85,12 +83,10 @@ namespace TAO
bool response_expected = true);
#if TAO_HAS_INTERCEPTORS ==1
- virtual Dynamic::ParameterList *arguments (void)
- ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual Dynamic::ParameterList *arguments (void);
#endif /*TAO_HAS_INTERCEPTORS == 1*/
- Invocation_Status remote_invocation (ACE_Time_Value *max_wait_time)
- ACE_THROW_SPEC ((CORBA::Exception));
+ Invocation_Status remote_invocation (ACE_Time_Value *max_wait_time);
private:
@@ -98,6 +94,42 @@ namespace TAO
CORBA::Request_ptr host_;
};
+
+ /**
+ * @class TAO_GIOP_DII_Asynch_Invocation
+ *
+ * @brief This class is responsible to send the asynchronous
+ * invocation.
+ *
+ * This class is responsible to send the asynchronous
+ * invocation. This class connects (or looks up a connection from the cache)
+ * to the remote server, builds the CDR stream for the Request, send
+ * the CDR stream and returns.
+ *
+ */
+ class TAO_DynamicInterface_Export TAO_GIOP_DII_Asynch_Invocation
+ : public TAO::Asynch_Remote_Invocation
+ {
+ public:
+ TAO_GIOP_DII_Asynch_Invocation (TAO_Stub *data,
+ TAO_ORB_Core* orb_core,
+ CORBA::Boolean argument_flag,
+ const CORBA::Request_ptr req,
+ CORBA::Object_ptr reply_handler,
+ int byte_order = TAO_ENCAP_BYTE_ORDER);
+
+ int invoke (void);
+
+ private:
+ /// Implementation of the invoke() methods, handles the basic
+ /// send/reply code and the system exceptions.
+ int invoke_i (void);
+
+
+ /// Reply dispatcher for the current synchronous Asynch_Invocation.
+ TAO_DII_Asynch_Reply_Dispatcher *rd_;
+ };
+
}
TAO_END_VERSIONED_NAMESPACE_DECL