diff options
Diffstat (limited to 'TAO/tao/DynamicInterface/DII_Invocation.h')
-rw-r--r-- | TAO/tao/DynamicInterface/DII_Invocation.h | 52 |
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 |