summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TAO/TAO_IDL/be/be_codegen.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/interceptors_cs.cpp10
-rw-r--r--TAO/tao/ClientInterceptorAdapter.cpp42
-rw-r--r--TAO/tao/ClientInterceptorAdapter.h43
-rw-r--r--TAO/tao/ClientInterceptorAdapter.inl3
-rw-r--r--TAO/tao/ClientRequestInfo.cpp515
-rw-r--r--TAO/tao/ClientRequestInfo.h122
-rw-r--r--TAO/tao/ClientRequestInfo.inl47
-rw-r--r--TAO/tao/ClientRequestInfo_i.cpp578
-rw-r--r--TAO/tao/ClientRequestInfo_i.h253
-rw-r--r--TAO/tao/ClientRequestInfo_i.inl36
-rw-r--r--TAO/tao/DomainC.cpp26
-rw-r--r--TAO/tao/Makefile1
-rw-r--r--TAO/tao/Makefile.bor1
-rw-r--r--TAO/tao/ORB_Core.cpp16
-rw-r--r--TAO/tao/ORB_Core.h10
-rw-r--r--TAO/tao/PolicyC.cpp38
-rw-r--r--TAO/tao/PortableServer/ImplRepoC.cpp158
-rw-r--r--TAO/tao/TAO.dsp12
-rw-r--r--TAO/tao/TAO_Static.dsp12
20 files changed, 1295 insertions, 630 deletions
diff --git a/TAO/TAO_IDL/be/be_codegen.cpp b/TAO/TAO_IDL/be/be_codegen.cpp
index 74a1bb26d12..ce465810dad 100644
--- a/TAO/TAO_IDL/be/be_codegen.cpp
+++ b/TAO/TAO_IDL/be/be_codegen.cpp
@@ -324,7 +324,7 @@ TAO_CodeGen::start_client_stubs (const char *fname)
this->gen_standard_include (this->client_stubs_,
"tao/RequestInfo_Util.h");
this->gen_standard_include (this->client_stubs_,
- "tao/ClientRequestInfo.h");
+ "tao/ClientRequestInfo_i.h");
this->gen_standard_include (this->client_stubs_,
"tao/ClientInterceptorAdapter.h");
*this->client_stubs_ << "#endif /* TAO_HAS_INTERCEPTORS == 1 */\n\n";
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/interceptors_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/interceptors_cs.cpp
index 380e15f1991..2979bc2edc5 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/interceptors_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/interceptors_cs.cpp
@@ -109,7 +109,7 @@ be_visitor_operation_interceptors_cs::
}
}
- *os << " : public TAO_ClientRequestInfo" << be_nl
+ *os << " : public TAO_ClientRequestInfo_i" << be_nl
<< "{" << be_nl
<< "public:" << be_idt_nl;
@@ -185,17 +185,17 @@ be_visitor_operation_interceptors_cs::
// Here I still need to generate the other methods + private args.
*os << "virtual Dynamic::ParameterList * arguments "
- << "(TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)" << be_idt_nl
+ << "(TAO_ENV_SINGLE_ARG_DECL)" << be_idt_nl
<< "ACE_THROW_SPEC ((CORBA::SystemException));"
<< be_uidt_nl << be_nl;
*os << "virtual Dynamic::ExceptionList * exceptions "
- << "(TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)" << be_idt_nl
+ << "(TAO_ENV_SINGLE_ARG_DECL)" << be_idt_nl
<< "ACE_THROW_SPEC ((CORBA::SystemException));"
<< be_uidt_nl << be_nl;
*os << "virtual CORBA::Any * result "
- << "(TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)" << be_idt_nl
+ << "(TAO_ENV_SINGLE_ARG_DECL)" << be_idt_nl
<< "ACE_THROW_SPEC ((CORBA::SystemException));\n"
<< be_uidt;
@@ -515,7 +515,7 @@ be_visitor_operation_interceptors_cs::
// Generate the member list and set each member but before that,
// its necessary to pass on some args to the base class.
os->indent ();
- *os << " : TAO_ClientRequestInfo (_tao_invocation, _tao_target)";
+ *os << " : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target)";
ctx = *this->ctx_;
ctx.state (TAO_CodeGen::TAO_OPERATION_INTERCEPTORS_ARG_INFO_CS);
diff --git a/TAO/tao/ClientInterceptorAdapter.cpp b/TAO/tao/ClientInterceptorAdapter.cpp
index 6d0dd33163b..a1ccb98465a 100644
--- a/TAO/tao/ClientInterceptorAdapter.cpp
+++ b/TAO/tao/ClientInterceptorAdapter.cpp
@@ -1,5 +1,3 @@
-// $Id$
-
#include "ClientInterceptorAdapter.h"
#if TAO_HAS_INTERCEPTORS == 1
@@ -9,6 +7,7 @@
#endif /* defined INLINE */
#include "ClientRequestInfo.h"
+#include "ClientRequestInfo_i.h"
#include "Invocation.h"
ACE_RCSID (tao,
@@ -22,18 +21,26 @@ TAO_ClientRequestInterceptor_Adapter::
void
TAO_ClientRequestInterceptor_Adapter::
-send_request (TAO_ClientRequestInfo *ri
+send_request (TAO_ClientRequestInfo_i *ri
TAO_ENV_ARG_DECL)
{
// This method implements one of the "starting" client side
// interception point.
-
ACE_TRY
{
+ // Only perform the TSS access if interceptors were registered
+ // with the ORB.
+ if (this->len_ > 0)
+ this->info_ =
+ this->invocation_->orb_core ()->
+ get_tss_resources ()->client_request_info_;
+
+ TAO_ClientRequestInfo_Guard info_guard (this->info_, ri);
+
for (size_t i = 0 ; i < this->len_; ++i)
{
- this->interceptors_[i]->send_request (ri
+ this->interceptors_[i]->send_request (this->info_
TAO_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
@@ -53,7 +60,7 @@ send_request (TAO_ClientRequestInfo *ri
void
TAO_ClientRequestInterceptor_Adapter::
-receive_reply (TAO_ClientRequestInfo *ri
+receive_reply (TAO_ClientRequestInfo_i *ri
TAO_ENV_ARG_DECL)
{
// This is an "ending" interception point so we only process the
@@ -63,6 +70,8 @@ receive_reply (TAO_ClientRequestInfo *ri
// they were pushed onto the stack since this is an "ending"
// interception point.
+ TAO_ClientRequestInfo_Guard info_guard (this->info_, ri);
+
// Unwind the stack.
size_t len = this->stack_size_;
for (size_t i = 0; i < len; ++i)
@@ -74,7 +83,7 @@ receive_reply (TAO_ClientRequestInfo *ri
--this->stack_size_;
this->interceptors_[this->stack_size_]->receive_reply (
- ri
+ this->info_
TAO_ENV_ARG_PARAMETER);
ACE_CHECK;
}
@@ -86,7 +95,7 @@ receive_reply (TAO_ClientRequestInfo *ri
void
TAO_ClientRequestInterceptor_Adapter::
-receive_exception (TAO_ClientRequestInfo *ri
+receive_exception (TAO_ClientRequestInfo_i *ri
TAO_ENV_ARG_DECL)
{
// This is an "ending" interception point so we only process the
@@ -98,6 +107,8 @@ receive_exception (TAO_ClientRequestInfo *ri
ACE_TRY
{
+ TAO_ClientRequestInfo_Guard info_guard (this->info_, ri);
+
// Unwind the flow stack.
size_t len = this->stack_size_;
for (size_t i = 0; i < len; ++i)
@@ -109,7 +120,7 @@ receive_exception (TAO_ClientRequestInfo *ri
--this->stack_size_;
this->interceptors_[this->stack_size_]->receive_exception (
- ri
+ this->info_
TAO_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
@@ -153,7 +164,7 @@ receive_exception (TAO_ClientRequestInfo *ri
void
TAO_ClientRequestInterceptor_Adapter::
-receive_other (TAO_ClientRequestInfo *ri
+receive_other (TAO_ClientRequestInfo_i *ri
TAO_ENV_ARG_DECL)
{
// This is an "ending" interception point so we only process the
@@ -165,6 +176,8 @@ receive_other (TAO_ClientRequestInfo *ri
ACE_TRY
{
+ TAO_ClientRequestInfo_Guard info_guard (this->info_, ri);
+
// Unwind the stack.
size_t len = this->stack_size_;
for (size_t i = 0; i < len; ++i)
@@ -176,7 +189,7 @@ receive_other (TAO_ClientRequestInfo *ri
--this->stack_size_;
this->interceptors_[this->stack_size_]->receive_other (
- ri
+ this->info_
TAO_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
@@ -192,19 +205,20 @@ receive_other (TAO_ClientRequestInfo *ri
void
TAO_ClientRequestInterceptor_Adapter::process_forward_request (
- TAO_ClientRequestInfo *ri,
+ TAO_ClientRequestInfo_i *ri,
PortableInterceptor::ForwardRequest &exc
TAO_ENV_ARG_DECL)
{
ri->forward_reference (exc);
this->invoke_status_ =
- this->invocation_->location_forward (exc.forward.in () TAO_ENV_ARG_PARAMETER);
+ this->invocation_->location_forward (exc.forward.in ()
+ TAO_ENV_ARG_PARAMETER);
ACE_CHECK;
// receive_other() is potentially invoked recursively.
this->receive_other (ri
- TAO_ENV_ARG_PARAMETER);
+ TAO_ENV_ARG_PARAMETER);
ACE_CHECK;
}
diff --git a/TAO/tao/ClientInterceptorAdapter.h b/TAO/tao/ClientInterceptorAdapter.h
index 828438a8316..cef92a9e73c 100644
--- a/TAO/tao/ClientInterceptorAdapter.h
+++ b/TAO/tao/ClientInterceptorAdapter.h
@@ -21,7 +21,7 @@
#include "ace/pre.h"
-#include "corbafwd.h"
+#include "ace/config-all.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
@@ -30,19 +30,22 @@
#if TAO_HAS_INTERCEPTORS == 1
-#include "ClientRequestInfo.h"
#include "Interceptor_List.h"
// Forward declarations
+class TAO_GIOP_Invocation;
class TAO_ClientRequestInfo;
+class TAO_ClientRequestInfo_i;
/**
* @class TAO_ClientRequestInterceptor_Adapter
*
- * @brief TAO_ClientRequestInterceptor_Adapter
+ * @brief A convenient helper class to invoke registered client request
+ * interceptors in client stubs.
*
- * A convenient helper class to invoke registered client request
- * interceptor(s) in tao_idl generated code.
+ * This class invokes all registered interceptors at interception
+ * point, and enforces flow rules dictated by the Portable Interceptor
+ * specification/chapter.
*/
class TAO_Export TAO_ClientRequestInterceptor_Adapter
{
@@ -70,23 +73,23 @@ public:
//@{
/// This method implements one of the "starting" client side
/// interception points.
- void send_request (TAO_ClientRequestInfo *ri
- TAO_ENV_ARG_DECL_NOT_USED);
+ void send_request (TAO_ClientRequestInfo_i *ri
+ TAO_ENV_ARG_DECL);
/// This method implements one of the "ending" client side
/// interception point.
- void receive_reply (TAO_ClientRequestInfo *ri
- TAO_ENV_ARG_DECL_NOT_USED);
+ void receive_reply (TAO_ClientRequestInfo_i *ri
+ TAO_ENV_ARG_DECL);
/// This method implements one of the "ending" client side
/// interception point.
- void receive_exception (TAO_ClientRequestInfo *ri
- TAO_ENV_ARG_DECL_NOT_USED);
+ void receive_exception (TAO_ClientRequestInfo_i *ri
+ TAO_ENV_ARG_DECL);
/// This method implements one of the "ending" client side
/// interception point.
- void receive_other (TAO_ClientRequestInfo *ri
- TAO_ENV_ARG_DECL_NOT_USED);
+ void receive_other (TAO_ClientRequestInfo_i *ri
+ TAO_ENV_ARG_DECL);
//@}
protected:
@@ -94,7 +97,7 @@ protected:
/// Process the given PortableInterceptor::ForwardRequest exception,
/// i.e. invoke the receive_other() interception point, in addition
/// to notifying the Invocation object of the LOCATION_FORWARD.
- void process_forward_request (TAO_ClientRequestInfo *ri,
+ void process_forward_request (TAO_ClientRequestInfo_i *ri,
PortableInterceptor::ForwardRequest &exc
TAO_ENV_ARG_DECL);
@@ -119,6 +122,18 @@ private:
/// stack. This is used when unwinding the flow stack.
size_t stack_size_;
+ /// Pointer to the PortableInterceptor::ClientRequestInfo
+ /// implementation.
+ /**
+ * @note The fact that a pointer to the
+ * PortableInterceptor::ClientRequestInfo object in TSS is
+ * cached here assumes that all client side interception
+ * points are invoked in the same thread. This may not be the
+ * case for AMI! In that case, we'll have to perform a TSS
+ * access in each interception point.
+ */
+ TAO_ClientRequestInfo *info_;
+
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/tao/ClientInterceptorAdapter.inl b/TAO/tao/ClientInterceptorAdapter.inl
index 83bd8ebe1a3..9b5622a80c7 100644
--- a/TAO/tao/ClientInterceptorAdapter.inl
+++ b/TAO/tao/ClientInterceptorAdapter.inl
@@ -11,7 +11,8 @@ TAO_ClientRequestInterceptor_Adapter::TAO_ClientRequestInterceptor_Adapter
invocation_ (invocation),
invoke_status_ (invoke_status),
len_ (0),
- stack_size_ (0)
+ stack_size_ (0),
+ info_ (0)
{
this->len_ = interceptors.size ();
}
diff --git a/TAO/tao/ClientRequestInfo.cpp b/TAO/tao/ClientRequestInfo.cpp
index 72692b0040a..08dedac5b24 100644
--- a/TAO/tao/ClientRequestInfo.cpp
+++ b/TAO/tao/ClientRequestInfo.cpp
@@ -1,13 +1,7 @@
// -*- C++ -*-
-//
-// $Id$
-
#include "ClientRequestInfo.h"
-#include "Invocation.h"
-#include "Stub.h"
-#include "Tagged_Components.h"
-#include "debug.h"
+#include "ClientRequestInfo_i.h"
ACE_RCSID (TAO,
ClientRequestInfo,
@@ -19,61 +13,39 @@ ACE_RCSID (TAO,
# include "ClientRequestInfo.inl"
# endif /* !__ACE_INLINE__ */
-TAO_ClientRequestInfo::TAO_ClientRequestInfo (TAO_GIOP_Invocation *inv,
- CORBA::Object_ptr target)
- : invocation_ (inv),
- target_ (target), // No need to duplicate.
- caught_exception_ (0),
- response_expected_ (1),
- reply_status_ (-1)
+TAO_ClientRequestInfo::TAO_ClientRequestInfo (void)
+ : info_ (0)
{
}
CORBA::Object_ptr
-TAO_ClientRequestInfo::target (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
+TAO_ClientRequestInfo::target (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- return CORBA::Object::_duplicate (this->target_);
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (CORBA::Object::_nil ());
+
+ return this->info_->target (TAO_ENV_SINGLE_ARG_PARAMETER);
}
CORBA::Object_ptr
-TAO_ClientRequestInfo::effective_target (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
+TAO_ClientRequestInfo::effective_target (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- if (this->reply_status_ == PortableInterceptor::LOCATION_FORWARD)
- {
- // TAO_GIOP_Invocation::forward_reference() already duplicates
- // the reference before returning it so there is no need to
- // duplicate it here.
- return this->invocation_->forward_reference ();
- }
-
- return CORBA::Object::_duplicate (this->target_);
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (CORBA::Object::_nil ());
+
+ return this->info_->effective_target (TAO_ENV_SINGLE_ARG_PARAMETER);
}
IOP::TaggedProfile *
TAO_ClientRequestInfo::effective_profile (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- IOP::TaggedProfile *tagged_profile = 0;
- ACE_NEW_THROW_EX (tagged_profile,
- IOP::TaggedProfile,
- CORBA::NO_MEMORY (
- CORBA::SystemException::_tao_minor_code (
- TAO_DEFAULT_MINOR_CODE,
- ENOMEM),
- CORBA::COMPLETED_NO));
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
- IOP::TaggedProfile_var safe_tagged_profile = tagged_profile;
-
- IOP::TaggedProfile &ep =
- this->target_->_stubobj ()->profile_in_use ()->create_tagged_profile ();
-
- tagged_profile->tag = ep.tag;
- tagged_profile->profile_data = ep.profile_data; // Deep copy
-
- return safe_tagged_profile._retn ();
+ return this->info_->effective_profile (TAO_ENV_SINGLE_ARG_PARAMETER);
}
// Use at own risk. There is no way currently of extracting an
@@ -83,43 +55,10 @@ CORBA::Any *
TAO_ClientRequestInfo::received_exception (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- if (this->reply_status_ != PortableInterceptor::SYSTEM_EXCEPTION
- && this->reply_status_ != PortableInterceptor::USER_EXCEPTION)
- {
- ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
- CORBA::COMPLETED_NO), 0);
- }
-
- // 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_DEFAULT_MINOR_CODE,
- ENOMEM),
- CORBA::COMPLETED_NO));
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
- CORBA::Any_var caught_exception = temp;
-
- if (this->caught_exception_ != 0)
- *temp <<= *(this->caught_exception_);
-
- return caught_exception._retn ();
-}
-
-// = TAO specific method done since there currently is no simple way
-// to extract exceptions from an Any
-CORBA::Exception *
-TAO_ClientRequestInfo::_received_exception (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- return this->caught_exception_;
+ return this->info_->received_exception (TAO_ENV_SINGLE_ARG_PARAMETER);
}
char *
@@ -127,15 +66,10 @@ TAO_ClientRequestInfo::received_exception_id (
TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- if (this->reply_status_ != PortableInterceptor::SYSTEM_EXCEPTION
- && this->reply_status_ != PortableInterceptor::USER_EXCEPTION)
- {
- ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
- CORBA::COMPLETED_NO),
- 0);
- }
-
- return CORBA::string_dup (this->caught_exception_->_id ());
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->info_->received_exception_id (TAO_ENV_SINGLE_ARG_PARAMETER);
}
IOP::TaggedComponent *
@@ -144,43 +78,11 @@ TAO_ClientRequestInfo::get_effective_component (
TAO_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- TAO_Tagged_Components &ecs =
- this->target_->_stubobj ()->profile_in_use ()->tagged_components ();
-
- IOP::MultipleComponentProfile &components = ecs.components ();
-
- CORBA::ULong 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_DEFAULT_MINOR_CODE,
- ENOMEM),
- CORBA::COMPLETED_NO));
- ACE_CHECK_RETURN (0);
-
- 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.
- ACE_THROW_RETURN (CORBA::BAD_PARAM (TAO_OMG_VMCID | 28,
- CORBA::COMPLETED_NO),
- 0);
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->info_->get_effective_component (id
+ TAO_ENV_ARG_PARAMETER);
}
IOP::TaggedComponentSeq *
@@ -189,53 +91,11 @@ TAO_ClientRequestInfo::get_effective_components (
TAO_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- TAO_Tagged_Components &ecs =
- this->target_->_stubobj ()->profile_in_use ()->tagged_components ();
-
- IOP::MultipleComponentProfile &components = ecs.components ();
-
- IOP::TaggedComponentSeq *tagged_components = 0;
- IOP::TaggedComponentSeq_var safe_tagged_components;
-
- 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_DEFAULT_MINOR_CODE,
- ENOMEM),
- CORBA::COMPLETED_NO));
- ACE_CHECK_RETURN (0);
-
- safe_tagged_components = tagged_components;
- }
-
- 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.
- ACE_THROW_RETURN (CORBA::BAD_PARAM (TAO_OMG_VMCID | 28,
- CORBA::COMPLETED_NO),
- 0);
- }
-
- return safe_tagged_components._retn ();
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->info_->get_effective_components (id
+ TAO_ENV_ARG_PARAMETER);
}
CORBA::Policy_ptr
@@ -243,21 +103,11 @@ TAO_ClientRequestInfo::get_request_policy (CORBA::PolicyType type
TAO_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- // @@ Do we need to look anywhere else for the request policies?
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (CORBA::Policy::_nil ());
-#if TAO_HAS_CORBA_MESSAGING == 1
- return this->target_->_get_policy (type
- TAO_ENV_ARG_PARAMETER);
-#else
- ACE_UNUSED_ARG (type);
-
- ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (
- CORBA::SystemException::_tao_minor_code (
- TAO_DEFAULT_MINOR_CODE,
- ENOTSUP),
- CORBA::COMPLETED_NO),
- 0);
-#endif /* TAO_HAS_CORBA_MESSAGING == 1 */
+ return this->info_->get_request_policy (type
+ TAO_ENV_ARG_PARAMETER);
}
void
@@ -267,177 +117,104 @@ TAO_ClientRequestInfo::add_request_service_context (
TAO_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- // 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)
- {
- ACE_THROW (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 15,
- CORBA::COMPLETED_NO));
- }
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ this->info_->add_request_service_context (service_context,
+ replace
+ TAO_ENV_ARG_PARAMETER);
+ ACE_CHECK;
}
CORBA::ULong
TAO_ClientRequestInfo::request_id (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- // @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 = ACE_reinterpret_cast (unsigned long, 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 =
- (ACE_reinterpret_cast (unsigned long,
- this->invocation_) >> 8) & 0xFFFFFFFFu;
-
- // 64 bit address -- lower 32 bits
- else if (sizeof (this) == 8)
- id = ACE_reinterpret_cast (unsigned long,
- 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"));
-
- ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
- }
-
- return id;
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->info_->request_id (TAO_ENV_SINGLE_ARG_PARAMETER);
}
char *
-TAO_ClientRequestInfo::operation (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
+TAO_ClientRequestInfo::operation (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- return CORBA::string_dup (this->invocation_->operation ());
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->info_->operation (TAO_ENV_SINGLE_ARG_PARAMETER);
}
Dynamic::ParameterList *
TAO_ClientRequestInfo::arguments (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
- CORBA::COMPLETED_NO),
- 0);
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->info_->arguments (TAO_ENV_SINGLE_ARG_PARAMETER);
}
Dynamic::ExceptionList *
TAO_ClientRequestInfo::exceptions (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
- CORBA::COMPLETED_NO),
- 0);
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->info_->exceptions (TAO_ENV_SINGLE_ARG_PARAMETER);
}
Dynamic::ContextList *
TAO_ClientRequestInfo::contexts (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
- CORBA::COMPLETED_NO),
- 0);
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->info_->contexts (TAO_ENV_SINGLE_ARG_PARAMETER);
}
Dynamic::RequestContext *
TAO_ClientRequestInfo::operation_context (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
- CORBA::COMPLETED_NO),
- 0);
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->info_->operation_context (TAO_ENV_SINGLE_ARG_PARAMETER);
}
CORBA::Any *
TAO_ClientRequestInfo::result (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
- CORBA::COMPLETED_NO),
- 0);
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->info_->result (TAO_ENV_SINGLE_ARG_PARAMETER);
}
CORBA::Boolean
-TAO_ClientRequestInfo::response_expected (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
+TAO_ClientRequestInfo::response_expected (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- return this->response_expected_;
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->info_->response_expected (TAO_ENV_SINGLE_ARG_PARAMETER);
}
-# if TAO_HAS_CORBA_MESSAGING == 1
+#if TAO_HAS_CORBA_MESSAGING == 1
CORBA::Short
TAO_ClientRequestInfo::sync_scope (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- TAO_GIOP_Oneway_Invocation *inv =
- ACE_dynamic_cast (TAO_GIOP_Oneway_Invocation *,
- this->invocation_);
-
- // The response_expected_ check is a precautionary measure for
- // platforms that do not support RTTI, i.e. where the dynamic_cast
- // above would incorrectly work. If the response_expected flag is
- // not equal to zero then it is fairly safe to assume that the
- // invocation is not a one-way, meaning that the sync_scope() method
- // is not available.
- if (inv != 0 && this->response_expected_ == 0)
- return inv->sync_scope ();
-
- ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
- CORBA::COMPLETED_NO),
- -1);
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->info_->sync_scope (TAO_ENV_SINGLE_ARG_PARAMETER);
}
#endif /* TAO_HAS_CORBA_MESSAGING == 1 */
@@ -445,28 +222,20 @@ PortableInterceptor::ReplyStatus
TAO_ClientRequestInfo::reply_status (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- if (this->reply_status_ == -1)
- // A reply hasn't been received yet.
- ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
- CORBA::COMPLETED_NO),
- -1);
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (PortableInterceptor::SYSTEM_EXCEPTION);
- return this->reply_status_;
+ return this->info_->reply_status (TAO_ENV_SINGLE_ARG_PARAMETER);
}
CORBA::Object_ptr
TAO_ClientRequestInfo::forward_reference (TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- if (this->reply_status_ != PortableInterceptor::LOCATION_FORWARD)
- ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
- CORBA::COMPLETED_NO),
- CORBA::Object::_nil ());
-
- // TAO_GIOP_Invocation::forward_reference() already duplicates the
- // reference before returning it so there is no need to duplicate it
- // here.
- return this->invocation_->forward_reference ();
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (CORBA::Object::_nil ());
+
+ return this->info_->forward_reference (TAO_ENV_SINGLE_ARG_PARAMETER);
}
CORBA::Any *
@@ -475,26 +244,11 @@ TAO_ClientRequestInfo::get_slot (PortableInterceptor::SlotId id
ACE_THROW_SPEC ((CORBA::SystemException,
PortableInterceptor::InvalidSlot))
{
- // @@ This implementation incurs a TSS access each time it is
- // invoked. It need not do that. This method can be invoked by
- // each client request interceptor multiple times. At some point
- // we need to add the request scope current to the Invocation
- // object or some other object that is tied to a given
- // invocation. That way, only one TSS access would be
- // introduced.
- // -Ossama
-
- TAO_PICurrent *pi_current =
- this->invocation_->orb_core ()->pi_current ();
-
- if (pi_current == 0)
- ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
-
- // PICurrent is read-only during a request invocation on the client
- // side. No copying is necessary.
- return
- pi_current->get_slot (id
- TAO_ENV_ARG_PARAMETER);
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ return this->info_->get_slot (id
+ TAO_ENV_ARG_PARAMETER);
}
IOP::ServiceContext *
@@ -503,88 +257,37 @@ TAO_ClientRequestInfo::get_request_service_context (
TAO_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- // Get the service context from the list
- TAO_Service_Context &service_context_list =
- this->invocation_->request_service_context ();
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
- return this->get_service_context_i (service_context_list,
- id
- TAO_ENV_ARG_PARAMETER);
+ return this->info_->get_request_service_context (id
+ TAO_ENV_ARG_PARAMETER);
}
-
IOP::ServiceContext *
TAO_ClientRequestInfo::get_reply_service_context (
IOP::ServiceId id
TAO_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
- // Get the service context from the list
- TAO_Service_Context &service_context_list =
- this->invocation_->reply_service_context ();
+ this->check_validity (TAO_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
- return this->get_service_context_i (service_context_list,
- id
- TAO_ENV_ARG_PARAMETER);
+ return this->info_->get_reply_service_context (id
+ TAO_ENV_ARG_PARAMETER);
}
-IOP::ServiceContext *
-TAO_ClientRequestInfo::get_service_context_i (
- TAO_Service_Context &service_context_list,
- IOP::ServiceId id
- TAO_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- // Create a new service context to be returned. Assume
- // success.
- IOP::ServiceContext *service_context = 0;
- ACE_NEW_THROW_EX (service_context,
- IOP::ServiceContext,
- CORBA::NO_MEMORY (
- CORBA::SystemException::_tao_minor_code (
- TAO_DEFAULT_MINOR_CODE,
- ENOMEM),
- CORBA::COMPLETED_NO));
- ACE_CHECK_RETURN (0);
- IOP::ServiceContext_var safe_service_context = service_context;
-
- service_context->context_id = id;
- if (service_context_list.get_context (*service_context) != 0)
- {
- // Found.
- return safe_service_context._retn ();
- }
- else
- {
- // Not found.
- ACE_THROW_RETURN (CORBA::BAD_PARAM (TAO_OMG_VMCID | 23,
- CORBA::COMPLETED_NO),
- 0);
- }
-}
+// -------------------------------------------------------------------
-void
-TAO_ClientRequestInfo::reply_status (int invoke_status)
+
+TAO_ClientRequestInfo_Guard::~TAO_ClientRequestInfo_Guard (void)
{
- switch (invoke_status)
- {
- case TAO_INVOKE_OK:
- this->reply_status_ = PortableInterceptor::SUCCESSFUL;
- break;
- case TAO_INVOKE_RESTART:
- if (this->invocation_->received_location_forward ())
- this->reply_status_ = PortableInterceptor::LOCATION_FORWARD;
- else
- this->reply_status_ = PortableInterceptor::TRANSPORT_RETRY;
- break;
- default:
- // We should only get here if the invocation status is
- // TAO_INVOKE_EXCEPTION, i.e. a CORBA::SystemException, so set
- // the appropriate reply status.
- this->reply_status_ = PortableInterceptor::SYSTEM_EXCEPTION;
- break;
- }
+ // Restore the previous request information into the TSS object.
+ // Note that no TSS access occurs here.
+ if (this->info_ != 0)
+ this->info_->info (this->previous_info_);
}
+
#endif /* TAO_HAS_INTERCEPTORS == 1 */
diff --git a/TAO/tao/ClientRequestInfo.h b/TAO/tao/ClientRequestInfo.h
index be0c5220b21..d8ee7893885 100644
--- a/TAO/tao/ClientRequestInfo.h
+++ b/TAO/tao/ClientRequestInfo.h
@@ -9,7 +9,6 @@
* This is the implementation of the
* PortableInterceptor::ClientRequestInfo interface.
*
- * @author Kirthika Parameswaran <kirthika@cs.wustl.edu>
* @author Ossama Othman <ossama@uci.edu>
*/
//=============================================================================
@@ -36,26 +35,38 @@
#include "PortableInterceptorC.h"
#include "LocalObject.h"
-#include "StringSeqC.h"
-#include "Service_Context.h"
+//#include "StringSeqC.h"
-class TAO_GIOP_Invocation;
+class TAO_ClientRequestInfo_i;
/**
* @class TAO_ClientRequestInfo
*
* @brief Implementation of the PortableInterceptor::ClientRequestInfo
* interface.
+ *
+ * This class forwards all method calls to the underlying
+ * ClientRequestInfo implementation.
+ * @par
+ * An instance of this class is places in TSS, where as the underlying
+ * implementation is instantiated on the stack during each CORBA
+ * request. During each request invocation, a pointer to the stack
+ * instantiated implementation is placed in the instance of this
+ * class.
+ * @par
+ * This may seem unnecessary. However, it is necessary to avoid
+ * instantiating an object that inherits from CORBA::Object in the
+ * critical path. Such an instantiation would cause a lock to be
+ * initialized (not acquired) in the critical path, which can degrade
+ * performance significantly.
*/
-class TAO_Export TAO_ClientRequestInfo
+class TAO_ClientRequestInfo
: public virtual PortableInterceptor::ClientRequestInfo,
- public virtual CORBA::LocalObject
+ public virtual TAO_Local_RefCounted_Object
{
public:
- /// Constructor.
- TAO_ClientRequestInfo (TAO_GIOP_Invocation *invocation,
- CORBA::Object_ptr target);
+ TAO_ClientRequestInfo (void);
/// Return an ID unique to the current request. This request ID may
/// or may not be the same as the GIOP request ID.
@@ -168,15 +179,6 @@ public:
TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException));
- /**
- * @note This is TAO specific and was done to combat the previous
- * problem to some extent. Avoid this method whenever
- * possible.
- */
- virtual CORBA::Exception * _received_exception (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
/// Return the repository ID for the received exception.
virtual char * received_exception_id (
TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
@@ -213,59 +215,67 @@ public:
TAO_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException));
- /**
- * @name Stub helper methods
- *
- * The following methods are used in the implementation of the
- * Stubs, they are not part of the ClientRequestInfo interface, but
- * an extension used internally by TAO.
- */
- //@{
+ /// Set the ClientRequestInfo implementation which this class
+ /// forwards all method call to.
+ void info (TAO_ClientRequestInfo_i *info);
- /// Change the exception status.
- void exception (CORBA::Exception *exception);
+ /// Get the ClientRequestInfo implementation which this class
+ /// forwards all method call to.
+ TAO_ClientRequestInfo_i * info (void) const;
- /// Set the flag that states whether or not a response is expected.
- /// For example, no response is expected in a one-way operation.
- void response_expected (CORBA::Boolean flag);
+private:
- /// Set the status of the received reply.
- void reply_status (int invoke_status);
+ /// Check if this ClientRequestInfo object is called within the
+ /// context of a request.
+ void check_validity (TAO_ENV_ARG_DECL);
- /// Extract the forward object reference from the
- /// PortableInterceptor::ForwardRequest exception, and set the reply
- /// status flag accordingly.
- void forward_reference (PortableInterceptor::ForwardRequest &exc);
- //@}
+private:
-protected:
+ /// Pointer to the object that actually implements the
+ /// ClientRequestInfo functionality.
+ TAO_ClientRequestInfo_i * info_;
- /// Helper method to get the request and response service contexts.
- IOP::ServiceContext *get_service_context_i (
- TAO_Service_Context &service_context_list,
- IOP::ServiceId id
- TAO_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
+};
-protected:
- /// Pointer to the GIOP invocation object.
- TAO_GIOP_Invocation *invocation_;
+// -------------------------------------------------------------------
- /// Reference to the target object.
- CORBA::Object_ptr target_;
- /// Pointer to the caught exception.
- CORBA::Exception *caught_exception_;
+/**
+ * @class TAO_ClientRequestInfo_Guard
+ *
+ * @brief Guard for exception safe TAO_ClientRequestInfo_i pointer
+ * swapping.
+ *
+ * This class is used to ensure the swapping of
+ * TAO_ClientRequestInfo_i pointers in a TAO_ClientRequestInfo object
+ * is performed in an exception-safe manner when interception points
+ * are being invoked.
+ */
+class TAO_ClientRequestInfo_Guard
+{
+public:
- /// True if a two-way operation, false otherwise.
- CORBA::Boolean response_expected_;
+ /// Constructor.
+ TAO_ClientRequestInfo_Guard (TAO_ClientRequestInfo *info,
+ TAO_ClientRequestInfo_i *ri);
+
+ /// Destructor.
+ ~TAO_ClientRequestInfo_Guard (void);
+
+private:
- /// Reply status for the current request.
- PortableInterceptor::ReplyStatus reply_status_;
+ /// Pointer to the TAO_ClientRequestInfo object upon which pointer
+ /// swaps will occur.
+ TAO_ClientRequestInfo * info_;
+
+ /// Pointer to the TAO_ClientRequestInfo_i object that was
+ /// previously stored in the TAO_ClientRequestInfo object.
+ TAO_ClientRequestInfo_i * previous_info_;
};
+
# if defined (__ACE_INLINE__)
# include "ClientRequestInfo.inl"
# endif /* __ACE_INLINE__ */
diff --git a/TAO/tao/ClientRequestInfo.inl b/TAO/tao/ClientRequestInfo.inl
index f88e8ec698f..6ca66ea946a 100644
--- a/TAO/tao/ClientRequestInfo.inl
+++ b/TAO/tao/ClientRequestInfo.inl
@@ -3,34 +3,39 @@
// $Id$
ACE_INLINE void
-TAO_ClientRequestInfo::exception (CORBA::Exception *exception)
+TAO_ClientRequestInfo::check_validity (TAO_ENV_ARG_DECL)
{
- if (CORBA::SystemException::_downcast (exception) != 0)
- this->reply_status_ = PortableInterceptor::SYSTEM_EXCEPTION;
- else if (CORBA::UserException::_downcast (exception) != 0)
- this->reply_status_ = PortableInterceptor::USER_EXCEPTION;
-
- // @@ Is it possible for both of the above downcasts to fail?
-
- this->caught_exception_ = exception;
+ if (this->info_ == 0)
+ ACE_THROW (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
+ CORBA::COMPLETED_NO));
}
ACE_INLINE void
-TAO_ClientRequestInfo::response_expected (CORBA::Boolean flag)
+TAO_ClientRequestInfo::info (TAO_ClientRequestInfo_i *info)
{
- this->response_expected_ = flag;
+ this->info_ = info;
}
-ACE_INLINE void
-TAO_ClientRequestInfo::forward_reference (
- PortableInterceptor::ForwardRequest &)
+ACE_INLINE TAO_ClientRequestInfo_i *
+TAO_ClientRequestInfo::info (void) const
{
- // Note that we're converting the ForwardRequest exception in to a
- // LOCATION_FORWARD reply, so we do not set the exception status.
- //
- // The forward object reference is not handled here. Rather, it is
- // handled by the TAO_GIOP_Invocation object so that its profiles
- // can be added to the list of forward profiles.
+ return this->info_;
+}
- this->reply_status_ = PortableInterceptor::LOCATION_FORWARD;
+
+// -------------------------------------------------------------------
+
+
+ACE_INLINE
+TAO_ClientRequestInfo_Guard::TAO_ClientRequestInfo_Guard (
+ TAO_ClientRequestInfo * info,
+ TAO_ClientRequestInfo_i * ri)
+ : info_ (info),
+ previous_info_ (0)
+{
+ if (info != 0)
+ {
+ this->previous_info_ = info->info ();
+ info->info (ri);
+ }
}
diff --git a/TAO/tao/ClientRequestInfo_i.cpp b/TAO/tao/ClientRequestInfo_i.cpp
new file mode 100644
index 00000000000..c8f98853255
--- /dev/null
+++ b/TAO/tao/ClientRequestInfo_i.cpp
@@ -0,0 +1,578 @@
+// -*- C++ -*-
+
+#include "ClientRequestInfo_i.h"
+#include "Invocation.h"
+#include "Stub.h"
+#include "Tagged_Components.h"
+#include "debug.h"
+
+ACE_RCSID (TAO,
+ ClientRequestInfo_i,
+ "$Id$")
+
+#if TAO_HAS_INTERCEPTORS == 1
+
+# if !defined (__ACE_INLINE__)
+# include "ClientRequestInfo_i.inl"
+# endif /* !__ACE_INLINE__ */
+
+TAO_ClientRequestInfo_i::TAO_ClientRequestInfo_i (TAO_GIOP_Invocation *inv,
+ CORBA::Object_ptr target)
+ : invocation_ (inv),
+ target_ (target), // No need to duplicate.
+ caught_exception_ (0),
+ response_expected_ (1),
+ reply_status_ (-1)
+{
+}
+
+CORBA::Object_ptr
+TAO_ClientRequestInfo_i::target (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::Object::_duplicate (this->target_);
+}
+
+CORBA::Object_ptr
+TAO_ClientRequestInfo_i::effective_target (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (this->reply_status_ == PortableInterceptor::LOCATION_FORWARD)
+ {
+ // TAO_GIOP_Invocation::forward_reference() already duplicates
+ // the reference before returning it so there is no need to
+ // duplicate it here.
+ return this->invocation_->forward_reference ();
+ }
+
+ return CORBA::Object::_duplicate (this->target_);
+}
+
+IOP::TaggedProfile *
+TAO_ClientRequestInfo_i::effective_profile (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ IOP::TaggedProfile *tagged_profile = 0;
+ ACE_NEW_THROW_EX (tagged_profile,
+ IOP::TaggedProfile,
+ CORBA::NO_MEMORY (
+ CORBA::SystemException::_tao_minor_code (
+ TAO_DEFAULT_MINOR_CODE,
+ ENOMEM),
+ CORBA::COMPLETED_NO));
+ ACE_CHECK_RETURN (0);
+
+ IOP::TaggedProfile_var safe_tagged_profile = tagged_profile;
+
+ IOP::TaggedProfile &ep =
+ this->target_->_stubobj ()->profile_in_use ()->create_tagged_profile ();
+
+ tagged_profile->tag = ep.tag;
+ tagged_profile->profile_data = ep.profile_data; // Deep copy
+
+ return safe_tagged_profile._retn ();
+}
+
+// Use at own risk. There is no way currently of extracting an
+// exception from an Any. This method is in place just to be compliant
+// with the spec.
+CORBA::Any *
+TAO_ClientRequestInfo_i::received_exception (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (this->reply_status_ != PortableInterceptor::SYSTEM_EXCEPTION
+ && this->reply_status_ != PortableInterceptor::USER_EXCEPTION)
+ {
+ ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
+ CORBA::COMPLETED_NO), 0);
+ }
+
+ // 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_DEFAULT_MINOR_CODE,
+ ENOMEM),
+ CORBA::COMPLETED_NO));
+ ACE_CHECK_RETURN (0);
+
+ CORBA::Any_var caught_exception = temp;
+
+ if (this->caught_exception_ != 0)
+ *temp <<= *(this->caught_exception_);
+
+ return caught_exception._retn ();
+}
+
+char *
+TAO_ClientRequestInfo_i::received_exception_id (
+ TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (this->reply_status_ != PortableInterceptor::SYSTEM_EXCEPTION
+ && this->reply_status_ != PortableInterceptor::USER_EXCEPTION)
+ {
+ ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
+ CORBA::COMPLETED_NO),
+ 0);
+ }
+
+ return CORBA::string_dup (this->caught_exception_->_id ());
+}
+
+IOP::TaggedComponent *
+TAO_ClientRequestInfo_i::get_effective_component (
+ IOP::ComponentId id
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ TAO_Tagged_Components &ecs =
+ this->target_->_stubobj ()->profile_in_use ()->tagged_components ();
+
+ IOP::MultipleComponentProfile &components = ecs.components ();
+
+ CORBA::ULong 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_DEFAULT_MINOR_CODE,
+ ENOMEM),
+ CORBA::COMPLETED_NO));
+ ACE_CHECK_RETURN (0);
+
+ 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.
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (TAO_OMG_VMCID | 28,
+ CORBA::COMPLETED_NO),
+ 0);
+}
+
+IOP::TaggedComponentSeq *
+TAO_ClientRequestInfo_i::get_effective_components (
+ IOP::ComponentId id
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ TAO_Tagged_Components &ecs =
+ this->target_->_stubobj ()->profile_in_use ()->tagged_components ();
+
+ IOP::MultipleComponentProfile &components = ecs.components ();
+
+ IOP::TaggedComponentSeq *tagged_components = 0;
+ IOP::TaggedComponentSeq_var safe_tagged_components;
+
+ 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_DEFAULT_MINOR_CODE,
+ ENOMEM),
+ CORBA::COMPLETED_NO));
+ ACE_CHECK_RETURN (0);
+
+ safe_tagged_components = tagged_components;
+ }
+
+ 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.
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (TAO_OMG_VMCID | 28,
+ CORBA::COMPLETED_NO),
+ 0);
+ }
+
+ return safe_tagged_components._retn ();
+}
+
+CORBA::Policy_ptr
+TAO_ClientRequestInfo_i::get_request_policy (CORBA::PolicyType type
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // @@ Do we need to look anywhere else for the request policies?
+
+#if TAO_HAS_CORBA_MESSAGING == 1
+ return this->target_->_get_policy (type
+ TAO_ENV_ARG_PARAMETER);
+#else
+ ACE_UNUSED_ARG (type);
+
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (
+ CORBA::SystemException::_tao_minor_code (
+ TAO_DEFAULT_MINOR_CODE,
+ ENOTSUP),
+ CORBA::COMPLETED_NO),
+ 0);
+#endif /* TAO_HAS_CORBA_MESSAGING == 1 */
+}
+
+void
+TAO_ClientRequestInfo_i::add_request_service_context (
+ const IOP::ServiceContext & service_context,
+ CORBA::Boolean replace
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // 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)
+ {
+ ACE_THROW (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 15,
+ CORBA::COMPLETED_NO));
+ }
+}
+
+CORBA::ULong
+TAO_ClientRequestInfo_i::request_id (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // @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 = ACE_reinterpret_cast (unsigned long, 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 =
+ (ACE_reinterpret_cast (unsigned long,
+ this->invocation_) >> 8) & 0xFFFFFFFFu;
+
+ // 64 bit address -- lower 32 bits
+ else if (sizeof (this) == 8)
+ id = ACE_reinterpret_cast (unsigned long,
+ 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"));
+
+ ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
+ }
+
+ return id;
+}
+
+char *
+TAO_ClientRequestInfo_i::operation (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->invocation_->operation ());
+}
+
+Dynamic::ParameterList *
+TAO_ClientRequestInfo_i::arguments (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
+ CORBA::COMPLETED_NO),
+ 0);
+}
+
+Dynamic::ExceptionList *
+TAO_ClientRequestInfo_i::exceptions (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
+ CORBA::COMPLETED_NO),
+ 0);
+}
+
+Dynamic::ContextList *
+TAO_ClientRequestInfo_i::contexts (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
+ CORBA::COMPLETED_NO),
+ 0);
+}
+
+Dynamic::RequestContext *
+TAO_ClientRequestInfo_i::operation_context (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
+ CORBA::COMPLETED_NO),
+ 0);
+}
+
+CORBA::Any *
+TAO_ClientRequestInfo_i::result (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
+ CORBA::COMPLETED_NO),
+ 0);
+}
+
+CORBA::Boolean
+TAO_ClientRequestInfo_i::response_expected (TAO_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->response_expected_;
+}
+
+# if TAO_HAS_CORBA_MESSAGING == 1
+CORBA::Short
+TAO_ClientRequestInfo_i::sync_scope (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ TAO_GIOP_Oneway_Invocation *inv =
+ ACE_dynamic_cast (TAO_GIOP_Oneway_Invocation *,
+ this->invocation_);
+
+ // The response_expected_ check is a precautionary measure for
+ // platforms that do not support RTTI, i.e. where the dynamic_cast
+ // above would incorrectly work. If the response_expected flag is
+ // not equal to zero then it is fairly safe to assume that the
+ // invocation is not a one-way, meaning that the sync_scope() method
+ // is not available.
+ if (inv != 0 && this->response_expected_ == 0)
+ return inv->sync_scope ();
+
+ ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
+ CORBA::COMPLETED_NO),
+ -1);
+}
+#endif /* TAO_HAS_CORBA_MESSAGING == 1 */
+
+PortableInterceptor::ReplyStatus
+TAO_ClientRequestInfo_i::reply_status (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (this->reply_status_ == -1)
+ // A reply hasn't been received yet.
+ ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
+ CORBA::COMPLETED_NO),
+ -1);
+
+ return this->reply_status_;
+}
+
+CORBA::Object_ptr
+TAO_ClientRequestInfo_i::forward_reference (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (this->reply_status_ != PortableInterceptor::LOCATION_FORWARD)
+ ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (TAO_OMG_VMCID | 14,
+ CORBA::COMPLETED_NO),
+ CORBA::Object::_nil ());
+
+ // TAO_GIOP_Invocation::forward_reference() already duplicates the
+ // reference before returning it so there is no need to duplicate it
+ // here.
+ return this->invocation_->forward_reference ();
+}
+
+CORBA::Any *
+TAO_ClientRequestInfo_i::get_slot (PortableInterceptor::SlotId id
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::InvalidSlot))
+{
+ // @@ This implementation incurs a TSS access each time it is
+ // invoked. It need not do that. This method can be invoked by
+ // each client request interceptor multiple times. At some point
+ // we need to add the request scope current to the Invocation
+ // object or some other object that is tied to a given
+ // invocation. That way, only one TSS access would be
+ // introduced.
+ // -Ossama
+
+ TAO_PICurrent *pi_current =
+ this->invocation_->orb_core ()->pi_current ();
+
+ if (pi_current == 0)
+ ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
+
+ // PICurrent is read-only during a request invocation on the client
+ // side. No copying is necessary.
+ return
+ pi_current->get_slot (id
+ TAO_ENV_ARG_PARAMETER);
+}
+
+IOP::ServiceContext *
+TAO_ClientRequestInfo_i::get_request_service_context (
+ IOP::ServiceId id
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // 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
+ TAO_ENV_ARG_PARAMETER);
+}
+
+
+IOP::ServiceContext *
+TAO_ClientRequestInfo_i::get_reply_service_context (
+ IOP::ServiceId id
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // 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
+ TAO_ENV_ARG_PARAMETER);
+}
+
+IOP::ServiceContext *
+TAO_ClientRequestInfo_i::get_service_context_i (
+ TAO_Service_Context &service_context_list,
+ IOP::ServiceId id
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // Create a new service context to be returned. Assume
+ // success.
+ IOP::ServiceContext *service_context = 0;
+ ACE_NEW_THROW_EX (service_context,
+ IOP::ServiceContext,
+ CORBA::NO_MEMORY (
+ CORBA::SystemException::_tao_minor_code (
+ TAO_DEFAULT_MINOR_CODE,
+ ENOMEM),
+ CORBA::COMPLETED_NO));
+ ACE_CHECK_RETURN (0);
+
+ IOP::ServiceContext_var safe_service_context = service_context;
+
+ service_context->context_id = id;
+ if (service_context_list.get_context (*service_context) != 0)
+ {
+ // Found.
+ return safe_service_context._retn ();
+ }
+ else
+ {
+ // Not found.
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (TAO_OMG_VMCID | 23,
+ CORBA::COMPLETED_NO),
+ 0);
+ }
+}
+
+void
+TAO_ClientRequestInfo_i::reply_status (int invoke_status)
+{
+ switch (invoke_status)
+ {
+ case TAO_INVOKE_OK:
+ this->reply_status_ = PortableInterceptor::SUCCESSFUL;
+ break;
+ case TAO_INVOKE_RESTART:
+ if (this->invocation_->received_location_forward ())
+ this->reply_status_ = PortableInterceptor::LOCATION_FORWARD;
+ else
+ this->reply_status_ = PortableInterceptor::TRANSPORT_RETRY;
+ break;
+ default:
+ // We should only get here if the invocation status is
+ // TAO_INVOKE_EXCEPTION, i.e. a CORBA::SystemException, so set
+ // the appropriate reply status.
+ this->reply_status_ = PortableInterceptor::SYSTEM_EXCEPTION;
+ break;
+ }
+}
+
+#endif /* TAO_HAS_INTERCEPTORS == 1 */
diff --git a/TAO/tao/ClientRequestInfo_i.h b/TAO/tao/ClientRequestInfo_i.h
new file mode 100644
index 00000000000..d2a0b5f50e5
--- /dev/null
+++ b/TAO/tao/ClientRequestInfo_i.h
@@ -0,0 +1,253 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file ClientRequestInfo_i.h
+ *
+ * $Id$
+ *
+ * This is the implementation of the
+ * PortableInterceptor::ClientRequestInfo interface.
+ *
+ * @author Ossama Othman <ossama@uci.edu>
+ * @author Kirthika Parameswaran <kirthika@cs.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef TAO_CLIENT_REQUEST_INFO_I_H
+#define TAO_CLIENT_REQUEST_INFO_I_H
+
+#include "ace/pre.h"
+
+#include "corbafwd.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#if (TAO_HAS_INTERCEPTORS == 1)
+
+#include "PortableInterceptorC.h"
+#include "StringSeqC.h"
+#include "Service_Context.h"
+
+class TAO_GIOP_Invocation;
+
+/**
+ * @class TAO_ClientRequestInfo_i
+ *
+ * @brief Implementation of the PortableInterceptor::ClientRequestInfo
+ * interface.
+ */
+class TAO_Export TAO_ClientRequestInfo_i
+{
+public:
+
+ /// Constructor.
+ TAO_ClientRequestInfo_i (TAO_GIOP_Invocation *invocation,
+ CORBA::Object_ptr target);
+
+ /// Return an ID unique to the current request. This request ID may
+ /// or may not be the same as the GIOP request ID.
+ CORBA::ULong request_id (
+ TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Return the operation name for the current request.
+ char * operation (
+ TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Return the list of arguments passed to the current operation.
+ virtual Dynamic::ParameterList * arguments (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Return the list of exceptions the current operation is capable
+ /// of throwing.
+ virtual Dynamic::ExceptionList * exceptions (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ Dynamic::ContextList * contexts (
+ TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ Dynamic::RequestContext * operation_context (
+ TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// 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.
+ virtual CORBA::Any * result (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Returns true for a two-way operation, and false otherwise.
+ CORBA::Boolean response_expected (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException)) ;
+
+#if TAO_HAS_CORBA_MESSAGING == 1
+ /// 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.
+ CORBA::Short sync_scope (TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+#endif /* TAO_HAS_CORBA_MESSAGING == 1 */
+
+ /// Return the reply status for the current request. Statuses can
+ /// be PortableInterceptor::SUCCESSFUL, SYSTEM_EXCEPTION,
+ /// USER_EXCEPTION, LOCATION_FORWARD, LOCATION_FORWARD_PERMANENT,
+ /// TRANSPORT_RETRY.
+ PortableInterceptor::ReplyStatus reply_status (
+ TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// If the reply status is PortableInterceptor::LOCATION_FORWARD or
+ /// PortableInterceptor::LOCATION_FORWARD_PERMANENT, return the
+ /// object reference to which the request was forwarded.
+ CORBA::Object_ptr forward_reference (
+ TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException)) ;
+
+ CORBA::Any * get_slot (
+ PortableInterceptor::SlotId id
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::InvalidSlot));
+
+ /// Return the IOP::ServiceContext with the given IOP::ServiceId
+ /// from the request service context list.
+ IOP::ServiceContext * get_request_service_context (
+ IOP::ServiceId id
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Return the IOP::ServiceContext with the given IOP::ServiceId
+ /// from the reply service context list.
+ IOP::ServiceContext * get_reply_service_context (
+ IOP::ServiceId id
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Return the (initial, non-forwarded, or permanently forwarded)
+ /// object reference of the target.
+ CORBA::Object_ptr target (
+ TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Return the object reference for the current target. The target
+ /// may change in the even of a location forward.
+ CORBA::Object_ptr effective_target (
+ TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ IOP::TaggedProfile * effective_profile (
+ TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Return an Any containing the received exception, if any.
+ /// Otherwise, throw a CORBA::BAD_INV_ORDER exception.
+ /**
+ * @note There is no trivial way to extract the exception from an Any.
+ */
+ CORBA::Any * received_exception (
+ TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Return the repository ID for the received exception.
+ char * received_exception_id (
+ TAO_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Return the first IOP::TaggedComponent that matches the given
+ /// IOP::ComponentId in the object reference for the current
+ /// target.
+ IOP::TaggedComponent * get_effective_component (
+ IOP::ComponentId id
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Return all IOP::TaggedComponent(s) that match the given
+ /// IOP::ComponentId in the object reference for the current
+ /// target.
+ IOP::TaggedComponentSeq * get_effective_components (
+ IOP::ComponentId id
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Return the policy of the given type in effect for the current
+ /// request.
+ CORBA::Policy_ptr get_request_policy (
+ CORBA::PolicyType type
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Add the IOP::ServiceContext to the request (outgoing)
+ /// IOP::ServiceContextList.
+ void add_request_service_context (
+ const IOP::ServiceContext & service_context,
+ CORBA::Boolean replace
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /**
+ * @name Stub helper methods
+ *
+ * The following methods are used in the implementation of the
+ * Stubs, they are not part of the ClientRequestInfo interface, but
+ * an extension used internally by TAO.
+ */
+ //@{
+
+ /// Change the exception status.
+ void exception (CORBA::Exception *exception);
+
+ /// Set the flag that states whether or not a response is expected.
+ /// For example, no response is expected in a one-way operation.
+ void response_expected (CORBA::Boolean flag);
+
+ /// Set the status of the received reply.
+ void reply_status (int invoke_status);
+
+ /// Extract the forward object reference from the
+ /// PortableInterceptor::ForwardRequest exception, and set the reply
+ /// status flag accordingly.
+ void forward_reference (PortableInterceptor::ForwardRequest &exc);
+ //@}
+
+protected:
+
+ /// Helper method to get the request and response service contexts.
+ IOP::ServiceContext *get_service_context_i (
+ TAO_Service_Context &service_context_list,
+ IOP::ServiceId id
+ TAO_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+protected:
+
+ /// Pointer to the GIOP invocation object.
+ TAO_GIOP_Invocation *invocation_;
+
+ /// Reference to the target object.
+ CORBA::Object_ptr target_;
+
+ /// Pointer to the caught exception.
+ CORBA::Exception *caught_exception_;
+
+ /// True if a two-way operation, false otherwise.
+ CORBA::Boolean response_expected_;
+
+ /// Reply status for the current request.
+ PortableInterceptor::ReplyStatus reply_status_;
+
+};
+
+# if defined (__ACE_INLINE__)
+# include "ClientRequestInfo_i.inl"
+# endif /* __ACE_INLINE__ */
+
+#endif /* TAO_HAS_INTERCEPTORS == 1 */
+
+#include "ace/post.h"
+
+#endif /* TAO_CLIENT_REQUEST_INFO_I_H */
diff --git a/TAO/tao/ClientRequestInfo_i.inl b/TAO/tao/ClientRequestInfo_i.inl
new file mode 100644
index 00000000000..98f5bfd9877
--- /dev/null
+++ b/TAO/tao/ClientRequestInfo_i.inl
@@ -0,0 +1,36 @@
+// -*- C++ -*-
+//
+// $Id$
+
+ACE_INLINE void
+TAO_ClientRequestInfo_i::exception (CORBA::Exception *exception)
+{
+ if (CORBA::SystemException::_downcast (exception) != 0)
+ this->reply_status_ = PortableInterceptor::SYSTEM_EXCEPTION;
+ else if (CORBA::UserException::_downcast (exception) != 0)
+ this->reply_status_ = PortableInterceptor::USER_EXCEPTION;
+
+ // @@ Is it possible for both of the above downcasts to fail?
+
+ this->caught_exception_ = exception;
+}
+
+ACE_INLINE void
+TAO_ClientRequestInfo_i::response_expected (CORBA::Boolean flag)
+{
+ this->response_expected_ = flag;
+}
+
+ACE_INLINE void
+TAO_ClientRequestInfo_i::forward_reference (
+ PortableInterceptor::ForwardRequest &)
+{
+ // Note that we're converting the ForwardRequest exception in to a
+ // LOCATION_FORWARD reply, so we do not set the exception status.
+ //
+ // The forward object reference is not handled here. Rather, it is
+ // handled by the TAO_GIOP_Invocation object so that its profiles
+ // can be added to the list of forward profiles.
+
+ this->reply_status_ = PortableInterceptor::LOCATION_FORWARD;
+}
diff --git a/TAO/tao/DomainC.cpp b/TAO/tao/DomainC.cpp
index bff89a772a5..9fd320eb250 100644
--- a/TAO/tao/DomainC.cpp
+++ b/TAO/tao/DomainC.cpp
@@ -27,7 +27,7 @@
#if TAO_HAS_INTERCEPTORS == 1
#include "tao/RequestInfo_Util.h"
-#include "tao/ClientRequestInfo.h"
+#include "tao/ClientRequestInfo_i.h"
#include "tao/ClientInterceptorAdapter.h"
#endif /* TAO_HAS_INTERCEPTORS == 1 */
@@ -271,28 +271,28 @@ CORBA_DomainManager_out::operator-> (void)
#if (TAO_HAS_INTERCEPTORS == 1)
-class TAO_ClientRequestInfo_CORBA_DomainManager_get_domain_policy : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_CORBA_DomainManager_get_domain_policy : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_CORBA_DomainManager_get_domain_policy (
TAO_GIOP_Invocation *_tao_invocation,
CORBA::Object_ptr _tao_target,
const CORBA::PolicyType & policy_type
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -312,7 +312,7 @@ TAO_ClientRequestInfo_CORBA_DomainManager_get_domain_policy::TAO_ClientRequestIn
const CORBA::PolicyType & policy_type
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target),
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target),
policy_type_ (policy_type)
{}
@@ -1049,7 +1049,7 @@ CORBA_ConstructionPolicy_out::operator-> (void)
#if (TAO_HAS_INTERCEPTORS == 1)
-class TAO_ClientRequestInfo_CORBA_ConstructionPolicy_make_domain_manager : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_CORBA_ConstructionPolicy_make_domain_manager : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_CORBA_ConstructionPolicy_make_domain_manager (
@@ -1057,21 +1057,21 @@ public:
CORBA::Object_ptr _tao_target,
CORBA_InterfaceDef_ptr object_type,
const CORBA::Boolean & constr_policy
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -1091,7 +1091,7 @@ TAO_ClientRequestInfo_CORBA_ConstructionPolicy_make_domain_manager::TAO_ClientRe
const CORBA::Boolean & constr_policy
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target),
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target),
object_type_ (object_type),
constr_policy_ (constr_policy)
{}
diff --git a/TAO/tao/Makefile b/TAO/tao/Makefile
index 0194614d5b4..66cba0856ac 100644
--- a/TAO/tao/Makefile
+++ b/TAO/tao/Makefile
@@ -188,6 +188,7 @@ ORB_CORE_FILES = \
Asynch_Invocation \
operation_details \
ClientRequestInfo \
+ ClientRequestInfo_i \
RequestInfo_Util \
ClientInterceptorAdapter \
ObjectReferenceTemplateC \
diff --git a/TAO/tao/Makefile.bor b/TAO/tao/Makefile.bor
index be966089cae..6517fee6151 100644
--- a/TAO/tao/Makefile.bor
+++ b/TAO/tao/Makefile.bor
@@ -45,6 +45,7 @@ OBJFILES = \
$(OBJDIR)\Cleanup_Func_Registry.obj \
$(OBJDIR)\ClientInterceptorAdapter.obj \
$(OBJDIR)\ClientRequestInfo.obj \
+ $(OBJDIR)\ClientRequestInfo_i.obj \
$(OBJDIR)\Client_Strategy_Factory.obj \
$(OBJDIR)\CodecFactory.obj \
$(OBJDIR)\CodecFactory_ORBInitializer.obj \
diff --git a/TAO/tao/ORB_Core.cpp b/TAO/tao/ORB_Core.cpp
index 66a565c4c81..8586e8cc403 100644
--- a/TAO/tao/ORB_Core.cpp
+++ b/TAO/tao/ORB_Core.cpp
@@ -41,6 +41,10 @@
#include "tao/LF_Event_Loop_Thread_Helper.h"
+#if (TAO_HAS_INTERCEPTORS == 1)
+#include "tao/ClientRequestInfo.h"
+#endif /* TAO_HAS_INTERCEPTORS == 1 */
+
#include "ace/Object_Manager.h"
#include "ace/Env_Value_T.h"
#include "ace/Dynamic_Service.h"
@@ -2673,7 +2677,15 @@ TAO_ORB_Core_TSS_Resources::TAO_ORB_Core_TSS_Resources (void)
lane_ (0),
ts_objects_ (),
orb_core_ (0)
+#if TAO_HAS_INTERCEPTORS == 1
+ , pi_current_ ()
+ , client_request_info_ (0)
+#endif /* TAO_HAS_INTERCEPTORS == 1 */
{
+#if TAO_HAS_INTERCEPTORS == 1
+ ACE_NEW (this->client_request_info_,
+ TAO_ClientRequestInfo);
+#endif /* TAO_HAS_INTERCEPTORS == 1 */
}
TAO_ORB_Core_TSS_Resources::~TAO_ORB_Core_TSS_Resources (void)
@@ -2698,6 +2710,10 @@ TAO_ORB_Core_TSS_Resources::~TAO_ORB_Core_TSS_Resources (void)
this->input_cdr_buffer_allocator_->remove ();
delete this->input_cdr_buffer_allocator_;
+#if TAO_HAS_INTERCEPTORS == 1
+ CORBA::release (this->client_request_info_);
+#endif /* TAO_HAS_INTERCEPTORS == 1 */
+
//@@ This is broken on platforms that use TSS emulation since this
// destructor is invoked after the ORB. Since we're under
// pressure to release a beta, we'll have to leak the TSS objects
diff --git a/TAO/tao/ORB_Core.h b/TAO/tao/ORB_Core.h
index 091746bf2e9..1021afbeb50 100644
--- a/TAO/tao/ORB_Core.h
+++ b/TAO/tao/ORB_Core.h
@@ -90,6 +90,11 @@ class TAO_Delayed_Buffering_Sync_Strategy;
#endif /* TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1 */
+#if TAO_HAS_INTERCEPTORS == 1
+class TAO_ClientRequestInfo;
+#endif /* TAO_HAS_INTERCEPTORS == 1 */
+
+
class TAO_Transport_Sync_Strategy;
class TAO_Sync_Strategy;
class TAO_Policy_Validator;
@@ -164,8 +169,11 @@ public:
#if TAO_HAS_INTERCEPTORS == 1
/// The thread-specific portion of the PICurrent object.
TAO_PICurrent_Impl pi_current_;
-#endif /* TAO_HAS_INTERCEPTORS == 1 */
+ /// The PortableInterceptor::ClientRequestInfo object for the
+ /// current thread.
+ TAO_ClientRequestInfo *client_request_info_;
+#endif /* TAO_HAS_INTERCEPTORS == 1 */
};
diff --git a/TAO/tao/PolicyC.cpp b/TAO/tao/PolicyC.cpp
index cffb7e72d30..bb044d3e0e1 100644
--- a/TAO/tao/PolicyC.cpp
+++ b/TAO/tao/PolicyC.cpp
@@ -28,7 +28,7 @@
#if TAO_HAS_INTERCEPTORS == 1
#include "tao/RequestInfo_Util.h"
-#include "tao/ClientRequestInfo.h"
+#include "tao/ClientRequestInfo_i.h"
#include "tao/ClientInterceptorAdapter.h"
#endif /* TAO_HAS_INTERCEPTORS == 1 */
@@ -590,27 +590,27 @@ CORBA_Policy_out::operator-> (void)
#if (TAO_HAS_INTERCEPTORS == 1)
-class TAO_ClientRequestInfo_CORBA_Policy_policy_type_get : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_CORBA_Policy_policy_type_get : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_CORBA_Policy_policy_type_get (
TAO_GIOP_Invocation *_tao_invocation,
CORBA::Object_ptr _tao_target
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -628,7 +628,7 @@ TAO_ClientRequestInfo_CORBA_Policy_policy_type_get::TAO_ClientRequestInfo_CORBA_
CORBA::Object_ptr _tao_target
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target)
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target)
{}
Dynamic::ParameterList *
@@ -679,27 +679,27 @@ TAO_ClientRequestInfo_CORBA_Policy_policy_type_get::result (CORBA::PolicyType re
this->_result = result;
}
-class TAO_ClientRequestInfo_CORBA_Policy_copy : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_CORBA_Policy_copy : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_CORBA_Policy_copy (
TAO_GIOP_Invocation *_tao_invocation,
CORBA::Object_ptr _tao_target
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -717,7 +717,7 @@ TAO_ClientRequestInfo_CORBA_Policy_copy::TAO_ClientRequestInfo_CORBA_Policy_copy
CORBA::Object_ptr _tao_target
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target)
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target)
{}
Dynamic::ParameterList *
@@ -768,27 +768,27 @@ TAO_ClientRequestInfo_CORBA_Policy_copy::result (CORBA::Policy_ptr result)
this->_result = result;
}
-class TAO_ClientRequestInfo_CORBA_Policy_destroy : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_CORBA_Policy_destroy : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_CORBA_Policy_destroy (
TAO_GIOP_Invocation *_tao_invocation,
CORBA::Object_ptr _tao_target
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -804,7 +804,7 @@ TAO_ClientRequestInfo_CORBA_Policy_destroy::TAO_ClientRequestInfo_CORBA_Policy_d
CORBA::Object_ptr _tao_target
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target)
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target)
{}
Dynamic::ParameterList *
diff --git a/TAO/tao/PortableServer/ImplRepoC.cpp b/TAO/tao/PortableServer/ImplRepoC.cpp
index d8ae103334e..b11c3aff750 100644
--- a/TAO/tao/PortableServer/ImplRepoC.cpp
+++ b/TAO/tao/PortableServer/ImplRepoC.cpp
@@ -27,7 +27,7 @@
#if TAO_HAS_INTERCEPTORS == 1
#include "tao/RequestInfo_Util.h"
-#include "tao/ClientRequestInfo.h"
+#include "tao/ClientRequestInfo_i.h"
#include "tao/ClientInterceptorAdapter.h"
#endif /* TAO_HAS_INTERCEPTORS == 1 */
@@ -224,27 +224,27 @@ ImplementationRepository::ServerObject_out::operator-> (void)
#if (TAO_HAS_INTERCEPTORS == 1)
-class TAO_ClientRequestInfo_ImplementationRepository_ServerObject_ping : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_ImplementationRepository_ServerObject_ping : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_ImplementationRepository_ServerObject_ping (
TAO_GIOP_Invocation *_tao_invocation,
CORBA::Object_ptr _tao_target
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -260,7 +260,7 @@ TAO_ClientRequestInfo_ImplementationRepository_ServerObject_ping::TAO_ClientRequ
CORBA::Object_ptr _tao_target
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target)
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target)
{}
Dynamic::ParameterList *
@@ -301,27 +301,27 @@ TAO_ClientRequestInfo_ImplementationRepository_ServerObject_ping::result (TAO_EN
return result_any;
}
-class TAO_ClientRequestInfo_ImplementationRepository_ServerObject_shutdown : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_ImplementationRepository_ServerObject_shutdown : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_ImplementationRepository_ServerObject_shutdown (
TAO_GIOP_Invocation *_tao_invocation,
CORBA::Object_ptr _tao_target
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -337,7 +337,7 @@ TAO_ClientRequestInfo_ImplementationRepository_ServerObject_shutdown::TAO_Client
CORBA::Object_ptr _tao_target
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target)
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target)
{}
Dynamic::ParameterList *
@@ -2218,28 +2218,28 @@ ImplementationRepository::Administration_out::operator-> (void)
#if (TAO_HAS_INTERCEPTORS == 1)
-class TAO_ClientRequestInfo_ImplementationRepository_Administration_activate_server : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_ImplementationRepository_Administration_activate_server : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_ImplementationRepository_Administration_activate_server (
TAO_GIOP_Invocation *_tao_invocation,
CORBA::Object_ptr _tao_target,
const char * server
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -2257,7 +2257,7 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_activate_server::T
const char * server
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target),
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target),
server_ (server)
{}
@@ -2324,7 +2324,7 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_activate_server::r
return result_any;
}
-class TAO_ClientRequestInfo_ImplementationRepository_Administration_register_server : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_ImplementationRepository_Administration_register_server : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_ImplementationRepository_Administration_register_server (
@@ -2332,21 +2332,21 @@ public:
CORBA::Object_ptr _tao_target,
const char * server,
const ImplementationRepository::StartupOptions & options
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -2366,7 +2366,7 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_register_server::T
const ImplementationRepository::StartupOptions & options
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target),
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target),
server_ (server),
options_ (options)
{}
@@ -2436,7 +2436,7 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_register_server::r
return result_any;
}
-class TAO_ClientRequestInfo_ImplementationRepository_Administration_reregister_server : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_ImplementationRepository_Administration_reregister_server : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_ImplementationRepository_Administration_reregister_server (
@@ -2444,21 +2444,21 @@ public:
CORBA::Object_ptr _tao_target,
const char * server,
const ImplementationRepository::StartupOptions & options
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -2478,7 +2478,7 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_reregister_server:
const ImplementationRepository::StartupOptions & options
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target),
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target),
server_ (server),
options_ (options)
{}
@@ -2533,28 +2533,28 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_reregister_server:
return result_any;
}
-class TAO_ClientRequestInfo_ImplementationRepository_Administration_remove_server : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_ImplementationRepository_Administration_remove_server : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_ImplementationRepository_Administration_remove_server (
TAO_GIOP_Invocation *_tao_invocation,
CORBA::Object_ptr _tao_target,
const char * server
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -2572,7 +2572,7 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_remove_server::TAO
const char * server
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target),
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target),
server_ (server)
{}
@@ -2638,28 +2638,28 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_remove_server::res
return result_any;
}
-class TAO_ClientRequestInfo_ImplementationRepository_Administration_shutdown_server : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_ImplementationRepository_Administration_shutdown_server : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_ImplementationRepository_Administration_shutdown_server (
TAO_GIOP_Invocation *_tao_invocation,
CORBA::Object_ptr _tao_target,
const char * server
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -2677,7 +2677,7 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_shutdown_server::T
const char * server
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target),
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target),
server_ (server)
{}
@@ -2743,7 +2743,7 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_shutdown_server::r
return result_any;
}
-class TAO_ClientRequestInfo_ImplementationRepository_Administration_server_is_running : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_ImplementationRepository_Administration_server_is_running : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_ImplementationRepository_Administration_server_is_running (
@@ -2752,21 +2752,21 @@ public:
const char * server,
const char * addr,
ImplementationRepository::ServerObject_ptr server_object
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -2790,7 +2790,7 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_server_is_running:
ImplementationRepository::ServerObject_ptr server_object
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target),
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target),
server_ (server),
addr_ (addr),
server_object_ (server_object)
@@ -2874,28 +2874,28 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_server_is_running:
this->_result = result;
}
-class TAO_ClientRequestInfo_ImplementationRepository_Administration_server_is_shutting_down : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_ImplementationRepository_Administration_server_is_shutting_down : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_ImplementationRepository_Administration_server_is_shutting_down (
TAO_GIOP_Invocation *_tao_invocation,
CORBA::Object_ptr _tao_target,
const char * server
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -2913,7 +2913,7 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_server_is_shutting
const char * server
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target),
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target),
server_ (server)
{}
@@ -2979,28 +2979,28 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_server_is_shutting
return result_any;
}
-class TAO_ClientRequestInfo_ImplementationRepository_Administration_find : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_ImplementationRepository_Administration_find : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_ImplementationRepository_Administration_find (
TAO_GIOP_Invocation *_tao_invocation,
CORBA::Object_ptr _tao_target,
const char * server
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -3018,7 +3018,7 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_find::TAO_ClientRe
const char * server
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target),
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target),
server_ (server)
{}
@@ -3084,7 +3084,7 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_find::result (TAO_
return result_any;
}
-class TAO_ClientRequestInfo_ImplementationRepository_Administration_list : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_ImplementationRepository_Administration_list : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_ImplementationRepository_Administration_list (
@@ -3092,21 +3092,21 @@ public:
CORBA::Object_ptr _tao_target,
const CORBA::ULong & how_many
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -3126,7 +3126,7 @@ TAO_ClientRequestInfo_ImplementationRepository_Administration_list::TAO_ClientRe
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target),
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target),
how_many_ (how_many)
{}
@@ -5800,28 +5800,28 @@ ImplementationRepository::ServerInformationIterator_out::operator-> (void)
#if (TAO_HAS_INTERCEPTORS == 1)
-class TAO_ClientRequestInfo_ImplementationRepository_ServerInformationIterator_next_n : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_ImplementationRepository_ServerInformationIterator_next_n : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_ImplementationRepository_ServerInformationIterator_next_n (
TAO_GIOP_Invocation *_tao_invocation,
CORBA::Object_ptr _tao_target,
const CORBA::ULong & how_many
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -5841,7 +5841,7 @@ TAO_ClientRequestInfo_ImplementationRepository_ServerInformationIterator_next_n:
const CORBA::ULong & how_many
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target),
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target),
how_many_ (how_many)
{}
@@ -5902,27 +5902,27 @@ TAO_ClientRequestInfo_ImplementationRepository_ServerInformationIterator_next_n:
this->_result = result;
}
-class TAO_ClientRequestInfo_ImplementationRepository_ServerInformationIterator_destroy : public TAO_ClientRequestInfo
+class TAO_ClientRequestInfo_ImplementationRepository_ServerInformationIterator_destroy : public TAO_ClientRequestInfo_i
{
public:
TAO_ClientRequestInfo_ImplementationRepository_ServerInformationIterator_destroy (
TAO_GIOP_Invocation *_tao_invocation,
CORBA::Object_ptr _tao_target
- TAO_ENV_ARG_DECL_WITH_DEFAULTS);
+ TAO_ENV_ARG_DECL);
virtual Dynamic::ParameterList * arguments (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual Dynamic::ExceptionList * exceptions (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Any * result (
- TAO_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ TAO_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
@@ -5938,7 +5938,7 @@ TAO_ClientRequestInfo_ImplementationRepository_ServerInformationIterator_destroy
CORBA::Object_ptr _tao_target
TAO_ENV_ARG_DECL_NOT_USED
)
- : TAO_ClientRequestInfo (_tao_invocation, _tao_target)
+ : TAO_ClientRequestInfo_i (_tao_invocation, _tao_target)
{}
Dynamic::ParameterList *
diff --git a/TAO/tao/TAO.dsp b/TAO/tao/TAO.dsp
index f64649d1429..dc060855c31 100644
--- a/TAO/tao/TAO.dsp
+++ b/TAO/tao/TAO.dsp
@@ -251,6 +251,10 @@ SOURCE=.\ClientRequestInfo.cpp
# End Source File
# Begin Source File
+SOURCE=.\ClientRequestInfo_i.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\CodecFactory.cpp
# End Source File
# Begin Source File
@@ -1023,6 +1027,10 @@ SOURCE=.\ClientRequestInfo.h
# End Source File
# Begin Source File
+SOURCE=.\ClientRequestInfo_i.h
+# End Source File
+# Begin Source File
+
SOURCE=.\CodecFactory.h
# End Source File
# Begin Source File
@@ -1799,6 +1807,10 @@ SOURCE=.\ClientInterceptorAdapter.inl
# End Source File
# Begin Source File
+SOURCE=.\ClientRequestInfo_i.inl
+# End Source File
+# Begin Source File
+
SOURCE=.\Collocation_Resolver.i
# End Source File
# Begin Source File
diff --git a/TAO/tao/TAO_Static.dsp b/TAO/tao/TAO_Static.dsp
index bad735f563d..2468638d8cf 100644
--- a/TAO/tao/TAO_Static.dsp
+++ b/TAO/tao/TAO_Static.dsp
@@ -183,6 +183,10 @@ SOURCE=.\ClientRequestInfo.cpp
# End Source File
# Begin Source File
+SOURCE=.\ClientRequestInfo_i.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\CodecFactory.cpp
# End Source File
# Begin Source File
@@ -959,6 +963,10 @@ SOURCE=.\ClientRequestInfo.h
# End Source File
# Begin Source File
+SOURCE=.\ClientRequestInfo_i.h
+# End Source File
+# Begin Source File
+
SOURCE=.\CodecFactory.h
# End Source File
# Begin Source File
@@ -1783,6 +1791,10 @@ SOURCE=.\ClientInterceptorAdapter.inl
# End Source File
# Begin Source File
+SOURCE=.\ClientRequestInfo_i.inl
+# End Source File
+# Begin Source File
+
SOURCE=.\Collocation_Resolver.i
# End Source File
# Begin Source File