diff options
Diffstat (limited to 'TAO/tao/Collocated_Invocation.cpp')
-rw-r--r-- | TAO/tao/Collocated_Invocation.cpp | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/TAO/tao/Collocated_Invocation.cpp b/TAO/tao/Collocated_Invocation.cpp index 584414397cc..504f6c22abd 100644 --- a/TAO/tao/Collocated_Invocation.cpp +++ b/TAO/tao/Collocated_Invocation.cpp @@ -41,15 +41,33 @@ namespace TAO ACE_TRY { - cpb->dispatch (this->effective_target (), - this->forwarded_to_.out (), - this->details_.args (), - this->details_.args_num (), - this->details_.opname (), - this->details_.opname_len (), - strat - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; + if (strat == TAO_CS_THRU_POA_STRATEGY) + { + TAO_ServerRequest request (this->orb_core_, + this->details_, + this->effective_target_); + + TAO_Request_Dispatcher * const dispatcher = + this->orb_core_->request_dispatcher (); + + dispatcher->dispatch (this->orb_core_, + request, + this->forwarded_to_.out ()); + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + else + { + cpb->dispatch (this->effective_target (), + this->forwarded_to_.out (), + this->details_.args (), + this->details_.args_num (), + this->details_.opname (), + this->details_.opname_len (), + strat + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } // Invocation completed succesfully s = TAO_INVOKE_SUCCESS; |