diff options
Diffstat (limited to 'TAO/tao/Invocation_Adapter.cpp')
-rw-r--r-- | TAO/tao/Invocation_Adapter.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/TAO/tao/Invocation_Adapter.cpp b/TAO/tao/Invocation_Adapter.cpp index f85187b0172..310cec2dad1 100644 --- a/TAO/tao/Invocation_Adapter.cpp +++ b/TAO/tao/Invocation_Adapter.cpp @@ -15,6 +15,7 @@ #include "tao/TAOC.h" #include "tao/SystemException.h" #include "tao/Collocation_Resolver.h" +#include "tao/Invocation_Retry_State.h" #include "ace/Service_Config.h" #if !defined (__ACE_INLINE__) @@ -69,6 +70,8 @@ namespace TAO max_wait_time= &tmp_wait_time; } + TAO::Invocation_Retry_State retry_state (*stub); + while (status == TAO_INVOKE_START || status == TAO_INVOKE_RESTART) { // Default we go to remote @@ -95,7 +98,8 @@ namespace TAO this->invoke_remote_i (stub, details, effective_target, - max_wait_time); + max_wait_time, + &retry_state); } else { @@ -228,7 +232,8 @@ namespace TAO Invocation_Adapter::invoke_remote_i (TAO_Stub *stub, TAO_Operation_Details &details, CORBA::Object_var &effective_target, - ACE_Time_Value *&max_wait_time) + ACE_Time_Value *&max_wait_time, + Invocation_Retry_State *retry_state) { (void) this->set_response_flags (stub, details); @@ -270,7 +275,8 @@ namespace TAO return this->invoke_twoway (details, effective_target, resolver, - max_wait_time); + max_wait_time, + retry_state); } } @@ -281,7 +287,8 @@ namespace TAO Invocation_Adapter::invoke_twoway (TAO_Operation_Details &details, CORBA::Object_var &effective_target, Profile_Transport_Resolver &r, - ACE_Time_Value *&max_wait_time) + ACE_Time_Value *&max_wait_time, + Invocation_Retry_State *retry_state) { // Simple sanity check if (this->mode_ != TAO_SYNCHRONOUS_INVOCATION || @@ -294,7 +301,10 @@ namespace TAO CORBA::COMPLETED_NO); } - TAO::Synch_Twoway_Invocation synch (this->target_, r, details); + TAO::Synch_Twoway_Invocation synch (this->target_, r, details, + true); + + synch.set_retry_state (retry_state); Invocation_Status const status = synch.remote_twoway (max_wait_time); |