diff options
Diffstat (limited to 'TAO/tao/Synch_Invocation.cpp')
-rw-r--r-- | TAO/tao/Synch_Invocation.cpp | 101 |
1 files changed, 49 insertions, 52 deletions
diff --git a/TAO/tao/Synch_Invocation.cpp b/TAO/tao/Synch_Invocation.cpp index 89f9ea19583..a2c6b49bce4 100644 --- a/TAO/tao/Synch_Invocation.cpp +++ b/TAO/tao/Synch_Invocation.cpp @@ -25,9 +25,9 @@ namespace TAO } Invocation_Status - Synch_Twoway_Invocation::communicate (Argument **args, - int args_number - ACE_ENV_ARG_DECL) + Synch_Twoway_Invocation::remote_twoway (Argument **args, + int args_number + ACE_ENV_ARG_DECL) { TAO_Synch_Reply_Dispatcher rd (this->resolver_.stub ()->orb_core (), this->detail_.reply_service_info ()); @@ -68,10 +68,14 @@ namespace TAO ACE_CHECK_RETURN (TAO_INVOKE_FAILURE); - this->send_message (TAO_Transport::TAO_TWOWAY_REQUEST, - cdr - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (TAO_INVOKE_FAILURE); + Invocation_Status s = + this->send_message (cdr, + TAO_Transport::TAO_TWOWAY_REQUEST + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (s); + + if (s != TAO_INVOKE_SUCCESS) + return s; // @@ In all MT environments, there's a cancellation point lurking // here; need to investigate. Client threads would frequently be @@ -100,6 +104,8 @@ namespace TAO } + + Invocation_Status Synch_Twoway_Invocation::check_reply_status (TAO_Synch_Reply_Dispatcher &rd, Argument **args, @@ -226,7 +232,7 @@ namespace TAO #endif } - cout << "Got here " << endl; + return TAO_INVOKE_SUCCESS; } @@ -326,62 +332,53 @@ namespace TAO { } + + Invocation_Status - Synch_Oneway_Invocation::communicate (Argument **args, - int args_number - ACE_ENV_ARG_DECL) + Synch_Oneway_Invocation::remote_oneway (Argument **args, + int args_number + ACE_ENV_ARG_DECL) { const CORBA::Octet response_flags = - this->detail_.response_flags (); + this->detail_.response_flags (); - if (response_flags == CORBA::Octet (Messaging::SYNC_NONE) - || response_flags == CORBA::Octet (Messaging::SYNC_WITH_TRANSPORT) - || response_flags == CORBA::Octet (TAO::SYNC_EAGER_BUFFERING) - || response_flags == CORBA::Octet (TAO::SYNC_DELAYED_BUFFERING)) - { - TAO_Target_Specification tspec; - this->init_target_spec (tspec ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (TAO_INVOKE_FAILURE); + if (response_flags == CORBA::Octet (Messaging::SYNC_WITH_SERVER) || + response_flags == CORBA::Octet (Messaging::SYNC_WITH_TARGET)) - TAO_OutputCDR &cdr = - this->resolver_.transport ()->messaging_object ()->out_stream (); + return Synch_Twoway_Invocation::remote_twoway (args, + args_number + ACE_ENV_ARG_PARAMETER); - this->write_header (tspec, - cdr - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (TAO_INVOKE_FAILURE); - this->marshal_data (args, - args_number, - cdr - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (TAO_INVOKE_FAILURE); + TAO_Target_Specification tspec; + this->init_target_spec (tspec ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (TAO_INVOKE_FAILURE); + TAO_OutputCDR &cdr = + this->resolver_.transport ()->messaging_object ()->out_stream (); - if (response_flags != CORBA::Octet (Messaging::SYNC_WITH_TRANSPORT)) - { - this->send_message (TAO_Transport::TAO_ONEWAY_REQUEST, - cdr - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (TAO_INVOKE_FAILURE); - } - else - { - this->send_message (TAO_Transport::TAO_TWOWAY_REQUEST, - cdr - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (TAO_INVOKE_FAILURE); - } - } - else + this->write_header (tspec, + cdr + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (TAO_INVOKE_FAILURE); + + this->marshal_data (args, + args_number, + cdr + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (TAO_INVOKE_FAILURE); + + + if (response_flags == CORBA::Octet (Messaging::SYNC_WITH_TRANSPORT)) { - return Synch_Twoway_Invocation::communicate (args, - args_number - ACE_ENV_ARG_PARAMETER); + return this->send_message (cdr, + TAO_Transport::TAO_TWOWAY_REQUEST + ACE_ENV_ARG_PARAMETER); } - return TAO_INVOKE_SUCCESS; + return this->send_message (cdr, + TAO_Transport::TAO_ONEWAY_REQUEST + ACE_ENV_ARG_PARAMETER); } - } |