diff options
Diffstat (limited to 'TAO/tao/PI_Server/ServerRequestInfo.cpp')
-rw-r--r-- | TAO/tao/PI_Server/ServerRequestInfo.cpp | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/TAO/tao/PI_Server/ServerRequestInfo.cpp b/TAO/tao/PI_Server/ServerRequestInfo.cpp index 33c9d149cc1..2b613ec3738 100644 --- a/TAO/tao/PI_Server/ServerRequestInfo.cpp +++ b/TAO/tao/PI_Server/ServerRequestInfo.cpp @@ -15,10 +15,13 @@ ACE_RCSID (PortableServer, #include "tao/TAO_Server_Request.h" #include "tao/ORB_Core.h" #include "tao/PolicyC.h" -#include "tao/DynamicC.h" +#include "tao/AnyTypeCode/DynamicC.h" #include "tao/ORB_Core.h" #include "tao/Service_Context.h" -#include "tao/RequestInfo_Util.h" +#include "tao/PI/RequestInfo_Util.h" +#include "tao/PI/PICurrent.h" +#include "tao/PI/PICurrent_Impl.h" +#include "tao/AnyTypeCode/ExceptionA.h" #include "ace/OS_NS_string.h" @@ -107,7 +110,9 @@ TAO::ServerRequestInfo::arguments (ACE_ENV_SINGLE_ARG_DECL) { // Insert the operation parameters into the // Dynamic::ParameterList. - (*i)->interceptor_param ((*parameter_list)[p]); + Dynamic::Parameter& parameter = (*parameter_list)[p]; + parameter.mode = (*i)->mode (); + (*i)->interceptor_value (¶meter.argument); } return safe_parameter_list._retn (); @@ -191,7 +196,7 @@ TAO::ServerRequestInfo::result (ACE_ENV_SINGLE_ARG_DECL) // Result is always first element in TAO::Argument array. TAO::Argument * const r = this->args_[0]; - r->interceptor_result (result_any); + r->interceptor_value (result_any); return safe_result_any._retn (); } @@ -250,9 +255,12 @@ TAO::ServerRequestInfo::get_slot (PortableInterceptor::SlotId id { // Retrieve the total number of assigned slots from the PICurrent. // No TSS access is incurred. - TAO::PICurrent * pi_current = + CORBA::Object_ptr pi_current_obj = this->server_request_.orb_core ()->pi_current (); + TAO::PICurrent *pi_current = + dynamic_cast <TAO::PICurrent*> (pi_current_obj); + if (pi_current == 0) ACE_THROW_RETURN (CORBA::INTERNAL (), 0); @@ -260,9 +268,9 @@ TAO::ServerRequestInfo::get_slot (PortableInterceptor::SlotId id ACE_CHECK_RETURN (0); // Retrieve the request scope PICurrent object. - TAO::PICurrent_Impl &rsc = this->server_request_.rs_pi_current (); + TAO::PICurrent_Impl *rsc = this->server_request_.rs_pi_current (); - return rsc.get_slot (id ACE_ENV_ARG_PARAMETER); + return rsc->get_slot (id ACE_ENV_ARG_PARAMETER); } @@ -517,9 +525,12 @@ TAO::ServerRequestInfo::set_slot (PortableInterceptor::SlotId id, { // Retrieve the total number of assigned slots from the PICurrent // object. No TSS access is incurred. - TAO::PICurrent * pi_current = + CORBA::Object_ptr pi_current_obj = this->server_request_.orb_core ()->pi_current (); + TAO::PICurrent *pi_current = + dynamic_cast <TAO::PICurrent*> (pi_current_obj); + if (pi_current == 0) ACE_THROW (CORBA::INTERNAL ()); @@ -527,9 +538,9 @@ TAO::ServerRequestInfo::set_slot (PortableInterceptor::SlotId id, ACE_CHECK; // Retrieve the "request scope current" (RSC). - TAO::PICurrent_Impl & rsc = this->server_request_.rs_pi_current (); + TAO::PICurrent_Impl * rsc = this->server_request_.rs_pi_current (); - rsc.set_slot (id, data ACE_ENV_ARG_PARAMETER); + rsc->set_slot (id, data ACE_ENV_ARG_PARAMETER); ACE_CHECK; } |