Implementation of the PortableInterceptor::ClientRequestInfo interface. More...
#include <ClientRequestInfo.h>


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_ |
Implementation of the PortableInterceptor::ClientRequestInfo interface.
Definition at line 71 of file ClientRequestInfo.h.
| TAO_ClientRequestInfo::TAO_ClientRequestInfo | ( | TAO::Invocation_Base * | invocation | ) |
Definition at line 32 of file ClientRequestInfo.cpp.
: invocation_ (inv), rs_pi_current_ () { this->setup_picurrent (); }
| void TAO_ClientRequestInfo::add_request_service_context | ( | const IOP::ServiceContext & | service_context, | |
| CORBA::Boolean | replace | |||
| ) | [virtual] |
Add the IOP::ServiceContext to the request (outgoing) IOP::ServiceContextList.
Definition at line 302 of file ClientRequestInfo.cpp.
{
this->check_validity ();
// Get the service context from the list
TAO_Service_Context &service_context_list =
this->invocation_->request_service_context ();
if (service_context_list.set_context (service_context, replace) == 0)
{
throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 15, CORBA::COMPLETED_NO);
}
}
| Dynamic::ParameterList * TAO_ClientRequestInfo::arguments | ( | void | ) | [virtual] |
Return the list of arguments passed to the current operation.
Definition at line 411 of file ClientRequestInfo.cpp.
{
this->check_validity ();
// Generate the argument list on demand.
Dynamic::ParameterList *parameter_list =
TAO_RequestInfo_Util::make_parameter_list ();
Dynamic::ParameterList_var safe_parameter_list = parameter_list;
if (this->parameter_list (*parameter_list) == false)
throw ::CORBA::MARSHAL ();
return safe_parameter_list._retn ();
}
| void TAO_ClientRequestInfo::check_validity | ( | void | ) | [private] |
Check if this ClientRequestInfo object is called within the context of a request.
Definition at line 616 of file ClientRequestInfo.cpp.
{
if (this->invocation_ == 0)
throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO);
}
| Dynamic::ContextList * TAO_ClientRequestInfo::contexts | ( | void | ) | [virtual] |
Definition at line 491 of file ClientRequestInfo.cpp.
{
this->check_validity ();
throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO);
}
| IOP::TaggedProfile * TAO_ClientRequestInfo::effective_profile | ( | void | ) | [virtual] |
Definition at line 100 of file ClientRequestInfo.cpp.
{
this->check_validity ();
IOP::TaggedProfile *tagged_profile = 0;
ACE_NEW_THROW_EX (tagged_profile,
IOP::TaggedProfile,
CORBA::NO_MEMORY (
CORBA::SystemException::_tao_minor_code (
TAO::VMCID,
ENOMEM),
CORBA::COMPLETED_NO));
IOP::TaggedProfile_var safe_tagged_profile = tagged_profile;
TAO_Stub *stub =
this->invocation_->effective_target ()->_stubobj ();
IOP::TaggedProfile *ep =
stub->profile_in_use ()->create_tagged_profile ();
if (ep == 0)
{
throw ::CORBA::BAD_PARAM (CORBA::OMGVMCID | 28, CORBA::COMPLETED_NO);
}
// @@BAD_PARAM exception
tagged_profile->tag = ep->tag;
tagged_profile->profile_data = ep->profile_data; // Deep copy
return safe_tagged_profile._retn ();
}
| CORBA::Object_ptr TAO_ClientRequestInfo::effective_target | ( | void | ) | [virtual] |
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.
{
this->check_validity ();
return CORBA::Object::_duplicate (this->invocation_->effective_target ());
}
| bool TAO_ClientRequestInfo::exception_list | ( | Dynamic::ExceptionList & | exception_list | ) | [private] |
Definition at line 469 of file ClientRequestInfo.cpp.
{
if (this->invocation_->operation_details ().ex_count ())
{
exception_list.length (this->invocation_->operation_details ().ex_count ());
for (CORBA::ULong i = 0;
i != this->invocation_->operation_details ().ex_count ();
++i)
{
CORBA::TypeCode_ptr tcp =
this->invocation_->operation_details ().ex_data ()[i].tc_ptr;
if (!CORBA::is_nil (tcp))
{
exception_list[i] = tcp;
}
}
}
return true;
}
| Dynamic::ExceptionList * TAO_ClientRequestInfo::exceptions | ( | void | ) | [virtual] |
Return the list of exceptions the current operation is capable of throwing.
Definition at line 453 of file ClientRequestInfo.cpp.
{
this->check_validity ();
Dynamic::ExceptionList *exception_list =
TAO_RequestInfo_Util::make_exception_list ();
Dynamic::ExceptionList_var safe_exception_list = exception_list;
if (this->exception_list (*exception_list) == false)
throw ::CORBA::MARSHAL ();
return safe_exception_list._retn ();
}
| CORBA::Object_ptr TAO_ClientRequestInfo::forward_reference | ( | void | ) | [virtual] |
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.
{
this->check_validity ();
if (this->invocation_->pi_reply_status() != PortableInterceptor::LOCATION_FORWARD)
{
throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO);
}
// TAO::Invocation_Base::forward_reference() already duplicates the
// reference before returning it so there is no need to duplicate it
// here.
return this->invocation_->forwarded_reference ();
}
| IOP::TaggedComponent * TAO_ClientRequestInfo::get_effective_component | ( | IOP::ComponentId | id | ) | [virtual] |
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.
{
this->check_validity ();
TAO_Stub *stub = this->invocation_->effective_target ()->_stubobj ();
TAO_Tagged_Components &ecs = stub->profile_in_use ()->tagged_components ();
IOP::MultipleComponentProfile &components = ecs.components ();
CORBA::ULong const len = components.length ();
for (CORBA::ULong i = 0; i < len; ++i)
{
if (components[i].tag == id)
{
IOP::TaggedComponent *tagged_component = 0;
// Only allocate a sequence if we have a tagged component
// that matches the given IOP::ComponentId.
ACE_NEW_THROW_EX (tagged_component,
IOP::TaggedComponent,
CORBA::NO_MEMORY (
CORBA::SystemException::_tao_minor_code (
TAO::VMCID,
ENOMEM),
CORBA::COMPLETED_NO));
IOP::TaggedComponent_var safe_tagged_component =
tagged_component;
(*tagged_component) = components[i]; // Deep copy
return safe_tagged_component._retn ();
}
}
// No tagged component was found that matched the given
// IOP::ComponentId.
throw ::CORBA::BAD_PARAM (CORBA::OMGVMCID | 28, CORBA::COMPLETED_NO);
}
| IOP::TaggedComponentSeq * TAO_ClientRequestInfo::get_effective_components | ( | IOP::ComponentId | id | ) | [virtual] |
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.
{
this->check_validity ();
TAO_Stub *stub = this->invocation_->target ()->_stubobj ();
TAO_Tagged_Components &ecs = stub->profile_in_use ()->tagged_components ();
IOP::MultipleComponentProfile &components = ecs.components ();
IOP::TaggedComponentSeq *tagged_components = 0;
IOP::TaggedComponentSeq_var safe_tagged_components;
const CORBA::ULong len = components.length ();
for (CORBA::ULong i = 0; i < len; ++i)
{
if (components[i].tag == id)
{
if (tagged_components == 0)
{
// Only allocate a sequence if we have tagged components
// to place into the sequence.
ACE_NEW_THROW_EX (tagged_components,
IOP::TaggedComponentSeq,
CORBA::NO_MEMORY (
CORBA::SystemException::_tao_minor_code (
TAO::VMCID,
ENOMEM),
CORBA::COMPLETED_NO));
safe_tagged_components = tagged_components;
}
const CORBA::ULong old_len = safe_tagged_components->length ();
safe_tagged_components->length (old_len + 1);
safe_tagged_components[old_len] = components[i]; // Deep copy
}
}
if (tagged_components == 0)
{
// No tagged component sequence was allocated, meaning no tagged
// components were found that matched the given
// IOP::ComponentId.
throw ::CORBA::BAD_PARAM (CORBA::OMGVMCID | 28, CORBA::COMPLETED_NO);
}
return safe_tagged_components._retn ();
}
| IOP::ServiceContext * TAO_ClientRequestInfo::get_reply_service_context | ( | IOP::ServiceId | id | ) | [virtual] |
Return the IOP::ServiceContext with the given IOP::ServiceId from the reply service context list.
Definition at line 604 of file ClientRequestInfo.cpp.
{
this->check_validity ();
// Get the service context from the list
TAO_Service_Context &service_context_list =
this->invocation_->reply_service_context ();
return this->get_service_context_i (service_context_list, id);
}
| CORBA::Policy_ptr TAO_ClientRequestInfo::get_request_policy | ( | CORBA::PolicyType | type | ) | [virtual] |
Return the policy of the given type in effect for the current request.
Definition at line 282 of file ClientRequestInfo.cpp.
{
this->check_validity ();
// @@ Do we need to look anywhere else for the request policies?
#if TAO_HAS_CORBA_MESSAGING == 1
return this->invocation_->target ()->_get_policy (type);
#else
ACE_UNUSED_ARG (type);
throw ::CORBA::NO_IMPLEMENT (
CORBA::SystemException::_tao_minor_code (
TAO::VMCID,
ENOTSUP),
CORBA::COMPLETED_NO);
#endif /* TAO_HAS_CORBA_MESSAGING == 1 */
}
| IOP::ServiceContext * TAO_ClientRequestInfo::get_request_service_context | ( | IOP::ServiceId | id | ) | [virtual] |
Return the IOP::ServiceContext with the given IOP::ServiceId from the request service context list.
Definition at line 592 of file ClientRequestInfo.cpp.
{
this->check_validity ();
// Get the service context from the list
TAO_Service_Context &service_context_list =
this->invocation_->request_service_context ();
return this->get_service_context_i (service_context_list, id);
}
| IOP::ServiceContext * TAO_ClientRequestInfo::get_service_context_i | ( | TAO_Service_Context & | service_context_list, | |
| IOP::ServiceId | id | |||
| ) | [private] |
Helper method to get the request and response service contexts.
Definition at line 65 of file ClientRequestInfo.cpp.
{
IOP::ServiceContext_var service_context;
if (service_context_list.get_context (id, service_context.out ()) != 0)
{
// Found.
return service_context._retn ();
}
else
{
// Not found.
throw ::CORBA::BAD_PARAM (CORBA::OMGVMCID | 26, CORBA::COMPLETED_NO);
}
}
| CORBA::Any * TAO_ClientRequestInfo::get_slot | ( | PortableInterceptor::SlotId | id | ) | [virtual] |
Definition at line 584 of file ClientRequestInfo.cpp.
{
this->check_validity ();
return this->rs_pi_current_.get_slot (id);
}
| char * TAO_ClientRequestInfo::operation | ( | void | ) | [virtual] |
Return the operation name for the current request.
Definition at line 403 of file ClientRequestInfo.cpp.
{
this->check_validity ();
return CORBA::string_dup (this->invocation_->operation_details ().opname ());
}
| Dynamic::RequestContext * TAO_ClientRequestInfo::operation_context | ( | void | ) | [virtual] |
Definition at line 499 of file ClientRequestInfo.cpp.
{
this->check_validity ();
throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO);
}
| bool TAO_ClientRequestInfo::parameter_list | ( | Dynamic::ParameterList & | param_list | ) | [private] |
Definition at line 428 of file ClientRequestInfo.cpp.
{
// Account for the return type that is in the argument list.
param_list.length (this->invocation_->operation_details ().args_num () - 1);
for (CORBA::ULong i = 1; i != this->invocation_->operation_details ().args_num (); ++i)
{
TAO::Argument *argument =
this->invocation_->operation_details ().args ()[i];
Dynamic::Parameter &p = param_list[i - 1];
p.mode = argument->mode ();
// When we are in send_request and have an out argument, then
// don't copy it, just let the any be empty with typecode tk_null
if ((this->invocation_->invoke_status () != TAO::TAO_INVOKE_START) ||
(this->invocation_->invoke_status () == TAO::TAO_INVOKE_START &&
argument->mode () != CORBA::PARAM_OUT))
{
argument->interceptor_value (&p.argument);
}
}
return true;
}
| CORBA::Any * TAO_ClientRequestInfo::received_exception | ( | void | ) | [virtual] |
Return an Any containing the received exception, if any. Otherwise, throw a CORBA::BAD_INV_ORDER exception.
Definition at line 137 of file ClientRequestInfo.cpp.
{
this->check_validity ();
if (this->invocation_->pi_reply_status () != PortableInterceptor::SYSTEM_EXCEPTION
&& this->invocation_->pi_reply_status () != PortableInterceptor::USER_EXCEPTION)
{
throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO);
}
// The spec says that if it is a user exception which can't be
// inserted then the UNKNOWN exception needs to be thrown with minor
// code 1.
CORBA::Any * temp = 0;
ACE_NEW_THROW_EX (temp,
CORBA::Any,
CORBA::NO_MEMORY (
CORBA::SystemException::_tao_minor_code (
TAO::VMCID,
ENOMEM),
CORBA::COMPLETED_NO));
CORBA::Any_var caught_exception_var = temp;
CORBA::Exception *caught_exception =
invocation_->caught_exception ();
if (caught_exception != 0)
*temp <<= *(caught_exception);
return caught_exception_var._retn ();
}
| char * TAO_ClientRequestInfo::received_exception_id | ( | void | ) | [virtual] |
Return the repository ID for the received exception.
Definition at line 173 of file ClientRequestInfo.cpp.
{
this->check_validity ();
CORBA::Exception *caught_exception = invocation_->caught_exception ();
if (caught_exception == 0)
{
throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO);
}
return CORBA::string_dup (caught_exception->_rep_id ());
}
| PortableInterceptor::ReplyStatus TAO_ClientRequestInfo::reply_status | ( | void | ) | [virtual] |
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.
{
this->check_validity ();
PortableInterceptor::ReplyStatus const status =
this->invocation_->pi_reply_status();
if (status == -1 || status == PortableInterceptor::UNKNOWN)
{
// A reply hasn't been received yet.
throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 14, CORBA::COMPLETED_NO);
}
return status;
}
| CORBA::ULong TAO_ClientRequestInfo::request_id | ( | void | ) | [virtual] |
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.
{
this->check_validity ();
// @todo We may have to worry about AMI once we support interceptors
// in AMI requests since the Invocation object no longer
// exists once an AMI request has been made. In that case,
// the reply dispatcher address should be used.
// The request ID must be unique across all outstanding requests.
// To avoid synchronization overhead, the address of this Invocation
// object is used as the request ID. This guarantees that the
// request ID is unique without being forced to acquire a lock.
//
// For 64-bit platforms, we right shift 8 bits and then use the
// lower 32 bits of that shifted value. Rather than losing the
// upper 32 bits of significant digits by taking the lower 32 bits,
// we only lose the upper 24 by doing the shift. Basically, the
// resulting request ID will comprised of bits 8 through 39. This is
// made possible by the fact that this Invocation object is large
// enough to increase the likelihood that those bits (0 through 39)
// are unique. In particular, this->buffer_ is 512 bytes
// (ACE_CDR::DEFAULT_BUFSIZE) long by default; implying that
// dropping the lower 8 bits of the this Invocation object's 64 bit
// address (i.e. 256 bytes) is not a problem.
CORBA::ULong id = 0;
// Note that we reinterpret_cast to an "unsigned long" instead of
// CORBA::ULong since we need to first cast to an integer large
// enough to hold an address to avoid compile-time warnings on some
// 64-bit platforms.
// 32 bit address
if (sizeof (this) == 4)
id =
static_cast<CORBA::ULong> (
reinterpret_cast<ptrdiff_t> (this->invocation_));
// 64 bit address -- bits 8 through 39 (see notes above!)
// In this case, we make sure this object is large enough to safely
// do the right shift. This is necessary since the size of the
// buffer that makes this object is configurable.
else if (sizeof (this) == 8
&& sizeof (*(this->invocation_)) > 256 /* 2 << 8 */)
id =
(static_cast<CORBA::ULong> (
reinterpret_cast<ptrdiff_t> (this->invocation_)) >> 8) & 0xFFFFFFFFu;
// 64 bit address -- lower 32 bits
else if (sizeof (this) == 8)
id =
static_cast<CORBA::ULong> (
reinterpret_cast<ptrdiff_t> (this->invocation_)) & 0xFFFFFFFFu;
// @@ The following request ID generator prevents the
// PortableInterceptor::ClientRequestInterceptor::send_request()
// interception point from occuring before the call to connect,
// thus preventing us from adding an optimization that itself
// prevents a connection from being unnecessarily performed.
// Thus, the ClientRequestInfo object is forced to have its own
// request ID generator in order to make it possible to implement
// the above optimization.
//
// Ideally, this request ID generator should go away, especially
// since it adds a lock to the critical path.
// else // Fallback
// id = this->invocation_->request_id ();
else
{
if (TAO_debug_level > 0)
ACE_ERROR ((LM_ERROR,
"(%P|%t) ClientRequestInfo::request_id() failed\n"
"(%P|%t) since its request ID generator is not\n"
"(%P|%t) supported on this platform.\n"));
throw ::CORBA::INTERNAL ();
}
return id;
}
| CORBA::Boolean TAO_ClientRequestInfo::response_expected | ( | void | ) | [virtual] |
Returns true for a two-way operation, and false otherwise.
Definition at line 536 of file ClientRequestInfo.cpp.
{
this->check_validity ();
return this->invocation_->response_expected ();
}
| CORBA::Any * TAO_ClientRequestInfo::result | ( | void | ) | [virtual] |
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.
{
this->check_validity ();
// Generate the result on demand.
static const CORBA::Boolean tk_void_any = 0;
CORBA::Any *result_any =
TAO_RequestInfo_Util::make_any (tk_void_any);
CORBA::Any_var safe_result_any = result_any;
if (this->result (result_any) == false)
throw ::CORBA::MARSHAL ();
return safe_result_any._retn ();
}
| bool TAO_ClientRequestInfo::result | ( | CORBA::Any * | any | ) | [private] |
Definition at line 525 of file ClientRequestInfo.cpp.
{
// Result is always first element in TAO::Argument array.
TAO::Argument * const r = this->invocation_->operation_details ().args ()[0];
r->interceptor_value (any);
return true;
}
| void TAO_ClientRequestInfo::setup_picurrent | ( | void | ) | [private] |
Setup thread scope and request scope PortableInterceptor::Current objects.
Definition at line 40 of file ClientRequestInfo.cpp.
{
// Retrieve the thread scope current (no TSS access incurred yet).
CORBA::Object_ptr pi_current_obj =
this->invocation_->stub ()->orb_core ()->pi_current ();
TAO::PICurrent *pi_current =
dynamic_cast <TAO::PICurrent*> (pi_current_obj);
// If the slot count is zero, then there is nothing to copy.
// Prevent any copying (and hence TSS accesses) from occurring.
if (pi_current != 0 && pi_current->slot_count () != 0)
{
// Retrieve the thread scope current.
TAO::PICurrent_Impl *tsc = pi_current->tsc ();
if (tsc != 0)
{
// Logically copy the TSC's slot table to the RSC.
this->rs_pi_current_.take_lazy_copy (tsc);
}
}
}
| Messaging::SyncScope TAO_ClientRequestInfo::sync_scope | ( | void | ) | [virtual] |
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.
{
this->check_validity ();
return this->invocation_->operation_details ().response_flags ();
}
| void TAO_ClientRequestInfo::tao_ft_expiration_time | ( | TimeBase::TimeT | time | ) |
Set the absolute FT expiration time for this request.
Definition at line 623 of file ClientRequestInfo.cpp.
{
this->invocation_->operation_details ().ft_expiration_time (time);
}
| TimeBase::TimeT TAO_ClientRequestInfo::tao_ft_expiration_time | ( | void | ) | const |
Get the absolute FT expiration time for this request.
Definition at line 629 of file ClientRequestInfo.cpp.
{
return this->invocation_->operation_details ().ft_expiration_time ();
}
| CORBA::Long TAO_ClientRequestInfo::tao_ft_retention_id | ( | void | ) | const |
Get the FT request retention ID for this request.
Definition at line 641 of file ClientRequestInfo.cpp.
{
return this->invocation_->operation_details ().ft_retention_id ();
}
| void TAO_ClientRequestInfo::tao_ft_retention_id | ( | CORBA::Long | request_id | ) |
Set the FT request retention ID for this request.
Definition at line 635 of file ClientRequestInfo.cpp.
{
this->invocation_->operation_details ().ft_retention_id (request_id) ;
}
| CORBA::Object_ptr TAO_ClientRequestInfo::target | ( | void | ) | [virtual] |
Return the (initial, non-forwarded, or permanently forwarded) object reference of the target.
Definition at line 84 of file ClientRequestInfo.cpp.
{
this->check_validity ();
return CORBA::Object::_duplicate (this->invocation_->target ());
}
TAO::Invocation_Base* TAO_ClientRequestInfo::invocation_ [private] |
Pointer to the invocation object.
Definition at line 216 of file ClientRequestInfo.h.
TAO::PICurrent_Impl TAO_ClientRequestInfo::rs_pi_current_ [private] |
The "Request Scope Current" (RSC) object, as required by Portable Interceptors.
Definition at line 220 of file ClientRequestInfo.h.
1.7.0