#include <ClientRequestInfo.h>
Inheritance diagram for TAO_ClientRequestInfo:
Public Member Functions | |
TAO_ClientRequestInfo (TAO::Invocation_Base *invocation) | |
virtual CORBA::ULong | request_id (void) |
virtual char * | operation (void) |
Return the operation name for the current request. | |
virtual Dynamic::ParameterList * | arguments (void) |
Return the list of arguments passed to the current operation. | |
virtual Dynamic::ExceptionList * | exceptions (void) |
virtual Dynamic::ContextList * | contexts (void) |
virtual Dynamic::RequestContext * | operation_context (void) |
virtual CORBA::Any * | result (void) |
virtual CORBA::Boolean | response_expected (void) |
Returns true for a two-way operation, and false otherwise. | |
virtual Messaging::SyncScope | sync_scope (void) |
virtual PortableInterceptor::ReplyStatus | reply_status (void) |
Return the reply status for the current request. | |
virtual CORBA::Object_ptr | forward_reference (void) |
virtual CORBA::Any * | get_slot (PortableInterceptor::SlotId id) |
virtual IOP::ServiceContext * | get_request_service_context (IOP::ServiceId id) |
virtual IOP::ServiceContext * | get_reply_service_context (IOP::ServiceId id) |
virtual CORBA::Object_ptr | target (void) |
virtual CORBA::Object_ptr | effective_target (void) |
virtual IOP::TaggedProfile * | effective_profile (void) |
virtual CORBA::Any * | received_exception (void) |
virtual char * | received_exception_id (void) |
Return the repository ID for the received exception. | |
virtual IOP::TaggedComponent * | get_effective_component (IOP::ComponentId id) |
virtual IOP::TaggedComponentSeq * | get_effective_components (IOP::ComponentId id) |
virtual CORBA::Policy_ptr | get_request_policy (CORBA::PolicyType type) |
virtual void | add_request_service_context (const IOP::ServiceContext &service_context, CORBA::Boolean replace) |
void | tao_ft_expiration_time (TimeBase::TimeT time) |
Set the absolute FT expiration time for this request. | |
TimeBase::TimeT | tao_ft_expiration_time (void) const |
Get the absolute FT expiration time for this request. | |
void | tao_ft_retention_id (CORBA::Long request_id) |
Set the FT request retention ID for this request. | |
CORBA::Long | tao_ft_retention_id (void) const |
Get the FT request retention ID for this request. | |
Private Member Functions | |
bool | parameter_list (Dynamic::ParameterList ¶m_list) |
bool | exception_list (Dynamic::ExceptionList &exception_list) |
bool | result (CORBA::Any *any) |
void | check_validity (void) |
void | setup_picurrent (void) |
IOP::ServiceContext * | get_service_context_i (TAO_Service_Context &service_context_list, IOP::ServiceId id) |
Helper method to get the request and response service contexts. | |
Private Attributes | |
TAO::Invocation_Base * | invocation_ |
Pointer to the invocation object. | |
TAO::PICurrent_Impl | rs_pi_current_ |
Definition at line 72 of file ClientRequestInfo.h.
|
Definition at line 32 of file ClientRequestInfo.cpp. References setup_picurrent().
00033 : invocation_ (inv), 00034 rs_pi_current_ () 00035 { 00036 this->setup_picurrent (); 00037 } |
|
Add the IOP::ServiceContext to the request (outgoing) IOP::ServiceContextList. Definition at line 302 of file ClientRequestInfo.cpp. References check_validity(), TAO::Invocation_Base::request_service_context(), and TAO_Service_Context::set_context().
00305 { 00306 this->check_validity (); 00307 00308 // Get the service context from the list 00309 TAO_Service_Context &service_context_list = 00310 this->invocation_->request_service_context (); 00311 00312 if (service_context_list.set_context (service_context, replace) == 0) 00313 { 00314 throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 15, CORBA::COMPLETED_NO); 00315 } 00316 } |
|
Return the list of arguments passed to the current operation.
Definition at line 411 of file ClientRequestInfo.cpp. References check_validity(), TAO_RequestInfo_Util::make_parameter_list(), and parameter_list().
00412 { 00413 this->check_validity (); 00414 00415 // Generate the argument list on demand. 00416 Dynamic::ParameterList *parameter_list = 00417 TAO_RequestInfo_Util::make_parameter_list (); 00418 00419 Dynamic::ParameterList_var safe_parameter_list = parameter_list; 00420 00421 if (this->parameter_list (*parameter_list) == false) 00422 throw ::CORBA::MARSHAL (); 00423 00424 return safe_parameter_list._retn (); 00425 } |
|
Check if this ClientRequestInfo object is called within the context of a request. Definition at line 616 of file ClientRequestInfo.cpp. Referenced by add_request_service_context(), arguments(), contexts(), effective_profile(), effective_target(), exceptions(), forward_reference(), get_effective_component(), get_effective_components(), get_reply_service_context(), get_request_policy(), get_request_service_context(), get_slot(), operation(), operation_context(), received_exception(), received_exception_id(), reply_status(), request_id(), response_expected(), result(), sync_scope(), and target().
00617 { 00618 if (this->invocation_ == 0) 00619 throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO); 00620 } |
|
Definition at line 491 of file ClientRequestInfo.cpp. References check_validity().
00492 { 00493 this->check_validity (); 00494 00495 throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO); 00496 } |
|
Definition at line 100 of file ClientRequestInfo.cpp. References ACE_NEW_THROW_EX, check_validity(), TAO_Profile::create_tagged_profile(), TAO::Invocation_Base::effective_target(), IOP::TaggedProfile::profile_data, TAO_Stub::profile_in_use(), and IOP::TaggedProfile::tag.
00101 { 00102 this->check_validity (); 00103 00104 IOP::TaggedProfile *tagged_profile = 0; 00105 ACE_NEW_THROW_EX (tagged_profile, 00106 IOP::TaggedProfile, 00107 CORBA::NO_MEMORY ( 00108 CORBA::SystemException::_tao_minor_code ( 00109 TAO::VMCID, 00110 ENOMEM), 00111 CORBA::COMPLETED_NO)); 00112 00113 IOP::TaggedProfile_var safe_tagged_profile = tagged_profile; 00114 00115 TAO_Stub *stub = 00116 this->invocation_->effective_target ()->_stubobj (); 00117 00118 IOP::TaggedProfile *ep = 00119 stub->profile_in_use ()->create_tagged_profile (); 00120 00121 if (ep == 0) 00122 { 00123 throw ::CORBA::BAD_PARAM (CORBA::OMGVMCID | 28, CORBA::COMPLETED_NO); 00124 } 00125 00126 // @@BAD_PARAM exception 00127 tagged_profile->tag = ep->tag; 00128 tagged_profile->profile_data = ep->profile_data; // Deep copy 00129 00130 return safe_tagged_profile._retn (); 00131 } |
|
Return the object reference for the current target. The target may change in the even of a location forward. Definition at line 92 of file ClientRequestInfo.cpp. References CORBA::Object::_duplicate(), and check_validity().
00093 { 00094 this->check_validity (); 00095 00096 return CORBA::Object::_duplicate (this->invocation_->effective_target ()); 00097 } |
|
Definition at line 469 of file ClientRequestInfo.cpp. References TAO_Operation_Details::ex_count(), TAO_Operation_Details::ex_data(), CORBA::is_nil(), TAO::Invocation_Base::operation_details(), and TAO::Exception_Data::tc_ptr. Referenced by exceptions().
00470 { 00471 if (this->invocation_->operation_details ().ex_count ()) 00472 { 00473 exception_list.length (this->invocation_->operation_details ().ex_count ()); 00474 00475 for (CORBA::ULong i = 0; 00476 i != this->invocation_->operation_details ().ex_count (); 00477 ++i) 00478 { 00479 CORBA::TypeCode_ptr tcp = 00480 this->invocation_->operation_details ().ex_data ()[i].tc_ptr; 00481 if (!CORBA::is_nil (tcp)) 00482 { 00483 exception_list[i] = tcp; 00484 } 00485 } 00486 } 00487 return true; 00488 } |
|
Return the list of exceptions the current operation is capable of throwing. Definition at line 453 of file ClientRequestInfo.cpp. References check_validity(), exception_list(), and TAO_RequestInfo_Util::make_exception_list().
00454 { 00455 this->check_validity (); 00456 00457 Dynamic::ExceptionList *exception_list = 00458 TAO_RequestInfo_Util::make_exception_list (); 00459 00460 Dynamic::ExceptionList_var safe_exception_list = exception_list; 00461 00462 if (this->exception_list (*exception_list) == false) 00463 throw ::CORBA::MARSHAL (); 00464 00465 return safe_exception_list._retn (); 00466 } |
|
If the reply status is PortableInterceptor::LOCATION_FORWARD or return the object reference to which the request was forwarded. Definition at line 568 of file ClientRequestInfo.cpp. References check_validity(), TAO::Invocation_Base::forwarded_reference(), and TAO::Invocation_Base::reply_status().
00569 { 00570 this->check_validity (); 00571 00572 if (this->invocation_->reply_status() != PortableInterceptor::LOCATION_FORWARD) 00573 { 00574 throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO); 00575 } 00576 00577 // TAO::Invocation_Base::forward_reference() already duplicates the 00578 // reference before returning it so there is no need to duplicate it 00579 // here. 00580 return this->invocation_->forwarded_reference (); 00581 } |
|
Return the first IOP::TaggedComponent that matches the given IOP::ComponentId in the object reference for the current target. Definition at line 188 of file ClientRequestInfo.cpp. References ACE_NEW_THROW_EX, check_validity(), TAO_Tagged_Components::components(), TAO::Invocation_Base::effective_target(), TAO_Stub::profile_in_use(), and TAO_Profile::tagged_components().
00189 { 00190 this->check_validity (); 00191 00192 TAO_Stub *stub = this->invocation_->effective_target ()->_stubobj (); 00193 00194 TAO_Tagged_Components &ecs = stub->profile_in_use ()->tagged_components (); 00195 00196 IOP::MultipleComponentProfile &components = ecs.components (); 00197 00198 CORBA::ULong const len = components.length (); 00199 for (CORBA::ULong i = 0; i < len; ++i) 00200 { 00201 if (components[i].tag == id) 00202 { 00203 IOP::TaggedComponent *tagged_component = 0; 00204 00205 // Only allocate a sequence if we have a tagged component 00206 // that matches the given IOP::ComponentId. 00207 ACE_NEW_THROW_EX (tagged_component, 00208 IOP::TaggedComponent, 00209 CORBA::NO_MEMORY ( 00210 CORBA::SystemException::_tao_minor_code ( 00211 TAO::VMCID, 00212 ENOMEM), 00213 CORBA::COMPLETED_NO)); 00214 00215 IOP::TaggedComponent_var safe_tagged_component = 00216 tagged_component; 00217 00218 (*tagged_component) = components[i]; // Deep copy 00219 00220 return safe_tagged_component._retn (); 00221 } 00222 } 00223 00224 // No tagged component was found that matched the given 00225 // IOP::ComponentId. 00226 throw ::CORBA::BAD_PARAM (CORBA::OMGVMCID | 28, CORBA::COMPLETED_NO); 00227 } |
|
Return all IOP::TaggedComponent(s) that match the given IOP::ComponentId in the object reference for the current target. Definition at line 230 of file ClientRequestInfo.cpp. References ACE_NEW_THROW_EX, check_validity(), TAO_Tagged_Components::components(), TAO_Stub::profile_in_use(), TAO_Profile::tagged_components(), and TAO::Invocation_Base::target().
00231 { 00232 this->check_validity (); 00233 00234 TAO_Stub *stub = this->invocation_->target ()->_stubobj (); 00235 00236 TAO_Tagged_Components &ecs = stub->profile_in_use ()->tagged_components (); 00237 00238 IOP::MultipleComponentProfile &components = ecs.components (); 00239 00240 IOP::TaggedComponentSeq *tagged_components = 0; 00241 IOP::TaggedComponentSeq_var safe_tagged_components; 00242 00243 const CORBA::ULong len = components.length (); 00244 for (CORBA::ULong i = 0; i < len; ++i) 00245 { 00246 if (components[i].tag == id) 00247 { 00248 if (tagged_components == 0) 00249 { 00250 // Only allocate a sequence if we have tagged components 00251 // to place into the sequence. 00252 ACE_NEW_THROW_EX (tagged_components, 00253 IOP::TaggedComponentSeq, 00254 CORBA::NO_MEMORY ( 00255 CORBA::SystemException::_tao_minor_code ( 00256 TAO::VMCID, 00257 ENOMEM), 00258 CORBA::COMPLETED_NO)); 00259 00260 safe_tagged_components = tagged_components; 00261 } 00262 00263 const CORBA::ULong old_len = safe_tagged_components->length (); 00264 safe_tagged_components->length (old_len + 1); 00265 00266 safe_tagged_components[old_len] = components[i]; // Deep copy 00267 } 00268 } 00269 00270 if (tagged_components == 0) 00271 { 00272 // No tagged component sequence was allocated, meaning no tagged 00273 // components were found that matched the given 00274 // IOP::ComponentId. 00275 throw ::CORBA::BAD_PARAM (CORBA::OMGVMCID | 28, CORBA::COMPLETED_NO); 00276 } 00277 00278 return safe_tagged_components._retn (); 00279 } |
|
Return the IOP::ServiceContext with the given IOP::ServiceId from the reply service context list. Definition at line 604 of file ClientRequestInfo.cpp. References check_validity(), get_service_context_i(), and TAO::Invocation_Base::reply_service_context().
00605 { 00606 this->check_validity (); 00607 00608 // Get the service context from the list 00609 TAO_Service_Context &service_context_list = 00610 this->invocation_->reply_service_context (); 00611 00612 return this->get_service_context_i (service_context_list, id); 00613 } |
|
Return the policy of the given type in effect for the current request. Definition at line 282 of file ClientRequestInfo.cpp. References check_validity(), ENOTSUP, and TAO::Invocation_Base::target().
00283 { 00284 this->check_validity (); 00285 00286 // @@ Do we need to look anywhere else for the request policies? 00287 00288 #if TAO_HAS_CORBA_MESSAGING == 1 00289 return this->invocation_->target ()->_get_policy (type); 00290 #else 00291 ACE_UNUSED_ARG (type); 00292 00293 throw ::CORBA::NO_IMPLEMENT ( 00294 CORBA::SystemException::_tao_minor_code ( 00295 TAO::VMCID, 00296 ENOTSUP), 00297 CORBA::COMPLETED_NO); 00298 #endif /* TAO_HAS_CORBA_MESSAGING == 1 */ 00299 } |
|
Return the IOP::ServiceContext with the given IOP::ServiceId from the request service context list. Definition at line 592 of file ClientRequestInfo.cpp. References check_validity(), get_service_context_i(), and TAO::Invocation_Base::request_service_context().
00593 { 00594 this->check_validity (); 00595 00596 // Get the service context from the list 00597 TAO_Service_Context &service_context_list = 00598 this->invocation_->request_service_context (); 00599 00600 return this->get_service_context_i (service_context_list, id); 00601 } |
|
Helper method to get the request and response service contexts.
Definition at line 65 of file ClientRequestInfo.cpp. References TAO_Service_Context::get_context(). Referenced by get_reply_service_context(), and get_request_service_context().
00068 { 00069 IOP::ServiceContext_var service_context; 00070 00071 if (service_context_list.get_context (id, service_context.out ()) != 0) 00072 { 00073 // Found. 00074 return service_context._retn (); 00075 } 00076 else 00077 { 00078 // Not found. 00079 throw ::CORBA::BAD_PARAM (CORBA::OMGVMCID | 26, CORBA::COMPLETED_NO); 00080 } 00081 } |
|
Definition at line 584 of file ClientRequestInfo.cpp. References check_validity(), and TAO::PICurrent_Impl::get_slot().
00585 { 00586 this->check_validity (); 00587 00588 return this->rs_pi_current_.get_slot (id); 00589 } |
|
Return the operation name for the current request.
Definition at line 403 of file ClientRequestInfo.cpp. References check_validity(), and CORBA::string_dup().
00404 { 00405 this->check_validity (); 00406 00407 return CORBA::string_dup (this->invocation_->operation_details ().opname ()); 00408 } |
|
Definition at line 499 of file ClientRequestInfo.cpp. References check_validity().
00500 { 00501 this->check_validity (); 00502 00503 throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO); 00504 } |
|
Definition at line 428 of file ClientRequestInfo.cpp. References TAO_Operation_Details::args(), TAO_Operation_Details::args_num(), TAO::Argument::interceptor_value(), TAO::Invocation_Base::invoke_status(), TAO::Argument::mode(), and TAO::Invocation_Base::operation_details(). Referenced by arguments().
00429 { 00430 // Account for the return type that is in the argument list. 00431 param_list.length (this->invocation_->operation_details ().args_num () - 1); 00432 00433 for (CORBA::ULong i = 1; i != this->invocation_->operation_details ().args_num (); ++i) 00434 { 00435 TAO::Argument *argument = 00436 this->invocation_->operation_details ().args ()[i]; 00437 Dynamic::Parameter &p = param_list[i - 1]; 00438 p.mode = argument->mode (); 00439 // When we are in send_request and have an out argument, then 00440 // don't copy it, just let the any be empty with typecode tk_null 00441 if ((this->invocation_->invoke_status () != TAO::TAO_INVOKE_START) || 00442 (this->invocation_->invoke_status () == TAO::TAO_INVOKE_START && 00443 argument->mode () != CORBA::PARAM_OUT)) 00444 { 00445 argument->interceptor_value (&p.argument); 00446 } 00447 } 00448 00449 return true; 00450 } |
|
Definition at line 137 of file ClientRequestInfo.cpp. References ACE_NEW_THROW_EX, TAO::Invocation_Base::caught_exception(), check_validity(), and TAO::Invocation_Base::reply_status().
00138 { 00139 this->check_validity (); 00140 00141 if (this->invocation_->reply_status () != PortableInterceptor::SYSTEM_EXCEPTION 00142 && this->invocation_->reply_status () != PortableInterceptor::USER_EXCEPTION) 00143 { 00144 throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO); 00145 } 00146 00147 // The spec says that if it is a user exception which can't be 00148 // inserted then the UNKNOWN exception needs to be thrown with minor 00149 // code 1. 00150 00151 CORBA::Any * temp = 0; 00152 00153 ACE_NEW_THROW_EX (temp, 00154 CORBA::Any, 00155 CORBA::NO_MEMORY ( 00156 CORBA::SystemException::_tao_minor_code ( 00157 TAO::VMCID, 00158 ENOMEM), 00159 CORBA::COMPLETED_NO)); 00160 00161 CORBA::Any_var caught_exception_var = temp; 00162 00163 CORBA::Exception *caught_exception = 00164 invocation_->caught_exception (); 00165 00166 if (caught_exception != 0) 00167 *temp <<= *(caught_exception); 00168 00169 return caught_exception_var._retn (); 00170 } |
|
Return the repository ID for the received exception.
Definition at line 173 of file ClientRequestInfo.cpp. References CORBA::Exception::_rep_id(), TAO::Invocation_Base::caught_exception(), check_validity(), and CORBA::string_dup().
00174 { 00175 this->check_validity (); 00176 00177 CORBA::Exception *caught_exception = invocation_->caught_exception (); 00178 00179 if (caught_exception == 0) 00180 { 00181 throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO); 00182 } 00183 00184 return CORBA::string_dup (caught_exception->_rep_id ()); 00185 } |
|
Return the reply status for the current request. Statuses can be PortableInterceptor::SUCCESSFUL, SYSTEM_EXCEPTION, USER_EXCEPTION, LOCATION_FORWARD, TRANSPORT_RETRY, UNKNOWN. Definition at line 552 of file ClientRequestInfo.cpp. References check_validity(), and TAO::Invocation_Base::reply_status().
00553 { 00554 this->check_validity (); 00555 00556 PortableInterceptor::ReplyStatus const status = 00557 this->invocation_->reply_status(); 00558 if (status == -1 || status == PortableInterceptor::UNKNOWN) 00559 { 00560 // A reply hasn't been received yet. 00561 throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO); 00562 } 00563 00564 return status; 00565 } |
|
Return an ID unique to the current request. This request ID may or may not be the same as the GIOP request ID. Definition at line 319 of file ClientRequestInfo.cpp. References ACE_ERROR, check_validity(), LM_ERROR, and TAO_debug_level.
00320 { 00321 this->check_validity (); 00322 00323 // @todo We may have to worry about AMI once we support interceptors 00324 // in AMI requests since the Invocation object no longer 00325 // exists once an AMI request has been made. In that case, 00326 // the reply dispatcher address should be used. 00327 00328 // The request ID must be unique across all outstanding requests. 00329 // To avoid synchronization overhead, the address of this Invocation 00330 // object is used as the request ID. This guarantees that the 00331 // request ID is unique without being forced to acquire a lock. 00332 // 00333 // For 64-bit platforms, we right shift 8 bits and then use the 00334 // lower 32 bits of that shifted value. Rather than losing the 00335 // upper 32 bits of significant digits by taking the lower 32 bits, 00336 // we only lose the upper 24 by doing the shift. Basically, the 00337 // resulting request ID will comprised of bits 8 through 39. This is 00338 // made possible by the fact that this Invocation object is large 00339 // enough to increase the likelihood that those bits (0 through 39) 00340 // are unique. In particular, this->buffer_ is 512 bytes 00341 // (ACE_CDR::DEFAULT_BUFSIZE) long by default; implying that 00342 // dropping the lower 8 bits of the this Invocation object's 64 bit 00343 // address (i.e. 256 bytes) is not a problem. 00344 00345 CORBA::ULong id = 0; 00346 00347 // Note that we reinterpret_cast to an "unsigned long" instead of 00348 // CORBA::ULong since we need to first cast to an integer large 00349 // enough to hold an address to avoid compile-time warnings on some 00350 // 64-bit platforms. 00351 00352 // 32 bit address 00353 if (sizeof (this) == 4) 00354 id = 00355 static_cast<CORBA::ULong> ( 00356 reinterpret_cast<ptrdiff_t> (this->invocation_)); 00357 00358 // 64 bit address -- bits 8 through 39 (see notes above!) 00359 // In this case, we make sure this object is large enough to safely 00360 // do the right shift. This is necessary since the size of the 00361 // buffer that makes this object is configurable. 00362 else if (sizeof (this) == 8 00363 && sizeof (*(this->invocation_)) > 256 /* 2 << 8 */) 00364 id = 00365 (static_cast<CORBA::ULong> ( 00366 reinterpret_cast<ptrdiff_t> (this->invocation_)) >> 8) & 0xFFFFFFFFu; 00367 00368 // 64 bit address -- lower 32 bits 00369 else if (sizeof (this) == 8) 00370 id = 00371 static_cast<CORBA::ULong> ( 00372 reinterpret_cast<ptrdiff_t> (this->invocation_)) & 0xFFFFFFFFu; 00373 00374 // @@ The following request ID generator prevents the 00375 // PortableInterceptor::ClientRequestInterceptor::send_request() 00376 // interception point from occuring before the call to connect, 00377 // thus preventing us from adding an optimization that itself 00378 // prevents a connection from being unnecessarily performed. 00379 // Thus, the ClientRequestInfo object is forced to have its own 00380 // request ID generator in order to make it possible to implement 00381 // the above optimization. 00382 // 00383 // Ideally, this request ID generator should go away, especially 00384 // since it adds a lock to the critical path. 00385 // else // Fallback 00386 // id = this->invocation_->request_id (); 00387 00388 else 00389 { 00390 if (TAO_debug_level > 0) 00391 ACE_ERROR ((LM_ERROR, 00392 "(%P|%t) ClientRequestInfo::request_id() failed\n" 00393 "(%P|%t) since its request ID generator is not\n" 00394 "(%P|%t) supported on this platform.\n")); 00395 00396 throw ::CORBA::INTERNAL (); 00397 } 00398 00399 return id; 00400 } |
|
Returns true for a two-way operation, and false otherwise.
Definition at line 536 of file ClientRequestInfo.cpp. References check_validity(), and TAO::Invocation_Base::response_expected().
00537 { 00538 this->check_validity (); 00539 00540 return this->invocation_->response_expected (); 00541 } |
|
Definition at line 525 of file ClientRequestInfo.cpp. References TAO_Operation_Details::args(), TAO::Argument::interceptor_value(), and TAO::Invocation_Base::operation_details().
00526 { 00527 // Result is always first element in TAO::Argument array. 00528 TAO::Argument * const r = this->invocation_->operation_details ().args ()[0]; 00529 00530 r->interceptor_value (any); 00531 00532 return true; 00533 } |
|
Return the result of the current request. If there is no return value then an Any with tk_void TypeCode is returned. This is method is not valid for oneway operations. Definition at line 507 of file ClientRequestInfo.cpp. References check_validity(), and TAO_RequestInfo_Util::make_any().
00508 { 00509 this->check_validity (); 00510 00511 // Generate the result on demand. 00512 static const CORBA::Boolean tk_void_any = 0; 00513 CORBA::Any *result_any = 00514 TAO_RequestInfo_Util::make_any (tk_void_any); 00515 00516 CORBA::Any_var safe_result_any = result_any; 00517 00518 if (this->result (result_any) == false) 00519 throw ::CORBA::MARSHAL (); 00520 00521 return safe_result_any._retn (); 00522 } |
|
Setup thread scope and request scope PortableInterceptor::Current objects. Definition at line 40 of file ClientRequestInfo.cpp. References TAO::Invocation_Base::orb_core(), TAO_ORB_Core::pi_current(), TAO::PICurrent::slot_count(), TAO::PICurrent_Impl::take_lazy_copy(), and TAO::PICurrent::tsc(). Referenced by TAO_ClientRequestInfo().
00041 { 00042 // Retrieve the thread scope current (no TSS access incurred yet). 00043 CORBA::Object_ptr pi_current_obj = 00044 this->invocation_->orb_core ()->pi_current (); 00045 00046 TAO::PICurrent *pi_current = 00047 dynamic_cast <TAO::PICurrent*> (pi_current_obj); 00048 00049 // If the slot count is zero, then there is nothing to copy. 00050 // Prevent any copying (and hence TSS accesses) from occurring. 00051 if (pi_current != 0 && pi_current->slot_count () != 0) 00052 { 00053 // Retrieve the thread scope current. 00054 TAO::PICurrent_Impl *tsc = pi_current->tsc (); 00055 00056 if (tsc != 0) 00057 { 00058 // Logically copy the TSC's slot table to the RSC. 00059 this->rs_pi_current_.take_lazy_copy (tsc); 00060 } 00061 } 00062 } |
|
Return the sync_scope policy value for the current one-way operation. If the operation is not a one-way, a CORBA::BAD_INV_ORDER exception is thrown. Definition at line 544 of file ClientRequestInfo.cpp. References check_validity(), TAO::Invocation_Base::operation_details(), and TAO_Operation_Details::response_flags().
00545 { 00546 this->check_validity (); 00547 00548 return this->invocation_->operation_details ().response_flags (); 00549 } |
|
Get the absolute FT expiration time for this request.
Definition at line 629 of file ClientRequestInfo.cpp. References TAO_Operation_Details::ft_expiration_time(), and TAO::Invocation_Base::operation_details().
00630 { 00631 return this->invocation_->operation_details ().ft_expiration_time (); 00632 } |
|
Set the absolute FT expiration time for this request.
Definition at line 623 of file ClientRequestInfo.cpp. References TAO_Operation_Details::ft_expiration_time(), and TAO::Invocation_Base::operation_details().
00624 { 00625 this->invocation_->operation_details ().ft_expiration_time (time); 00626 } |
|
Get the FT request retention ID for this request.
Definition at line 641 of file ClientRequestInfo.cpp. References TAO_Operation_Details::ft_retention_id(), and TAO::Invocation_Base::operation_details().
00642 { 00643 return this->invocation_->operation_details ().ft_retention_id (); 00644 } |
|
Set the FT request retention ID for this request.
Definition at line 635 of file ClientRequestInfo.cpp. References TAO_Operation_Details::ft_retention_id(), and TAO::Invocation_Base::operation_details().
00636 { 00637 this->invocation_->operation_details ().ft_retention_id (request_id) ; 00638 } |
|
Return the (initial, non-forwarded, or permanently forwarded) object reference of the target. Definition at line 84 of file ClientRequestInfo.cpp. References CORBA::Object::_duplicate(), and check_validity().
00085 { 00086 this->check_validity (); 00087 00088 return CORBA::Object::_duplicate (this->invocation_->target ()); 00089 } |
|
Pointer to the invocation object.
Definition at line 217 of file ClientRequestInfo.h. |
|
The "Request Scope Current" (RSC) object, as required by Portable Interceptors. Definition at line 221 of file ClientRequestInfo.h. |