summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbala <balanatarajan@users.noreply.github.com>2000-08-05 00:48:51 +0000
committerbala <balanatarajan@users.noreply.github.com>2000-08-05 00:48:51 +0000
commit3bba19a6ca8abb2bebc77a41800e8e4dfcebe82b (patch)
tree25985fcd0c151e7c91e769892c232e0d2ed6b263
parent9ad2079245bb1c4f7efa837bc7623df9e46f89ba (diff)
downloadATCD-3bba19a6ca8abb2bebc77a41800e8e4dfcebe82b.tar.gz
*** empty log message ***
-rw-r--r--TAO/tao/Acceptor_Impl.cpp14
-rw-r--r--TAO/tao/Acceptor_Registry.cpp5
-rw-r--r--TAO/tao/Buffering_Constraint_Policy.cpp3
-rw-r--r--TAO/tao/Buffering_Constraint_Policy.h9
-rw-r--r--TAO/tao/CONV_FRAMEC.i17
-rw-r--r--TAO/tao/Client_Priority_Policy.cpp3
-rw-r--r--TAO/tao/Client_Priority_Policy.h9
-rw-r--r--TAO/tao/Connector_Registry.cpp5
-rw-r--r--TAO/tao/DynAny_i.cpp92
-rw-r--r--TAO/tao/DynArray_i.cpp15
-rw-r--r--TAO/tao/DynEnum_i.cpp3
-rw-r--r--TAO/tao/DynSequence_i.cpp10
-rw-r--r--TAO/tao/DynStruct_i.cpp73
-rw-r--r--TAO/tao/DynUnion_i.cpp159
-rw-r--r--TAO/tao/IIOP_Connect.cpp28
-rw-r--r--TAO/tao/IIOP_Connector.cpp2
-rw-r--r--TAO/tao/IIOP_Transport.cpp4
-rw-r--r--TAO/tao/Invocation.cpp7
-rw-r--r--TAO/tao/Invocation.h3
-rw-r--r--TAO/tao/LocalObject.cpp21
-rw-r--r--TAO/tao/Messaging_Policy_i.cpp8
-rw-r--r--TAO/tao/Messaging_Policy_i.h21
-rw-r--r--TAO/tao/ORB_Core.cpp26
-rw-r--r--TAO/tao/ORB_Core.h19
-rw-r--r--TAO/tao/ORB_Core.i34
-rw-r--r--TAO/tao/Object_Adapter.cpp25
-rw-r--r--TAO/tao/Object_Adapter.h10
-rw-r--r--TAO/tao/Object_Adapter.i11
-rw-r--r--TAO/tao/POA.cpp30
-rw-r--r--TAO/tao/POA.h2
-rw-r--r--TAO/tao/POA.i2
-rw-r--r--TAO/tao/POAManager.cpp2
-rw-r--r--TAO/tao/POA_CORBA.h2
-rw-r--r--TAO/tao/Policy_Manager.h16
-rw-r--r--TAO/tao/Policy_Manager.i11
-rw-r--r--TAO/tao/PortableServerC.cpp88
-rw-r--r--TAO/tao/RT_Policy_i.cpp22
-rw-r--r--TAO/tao/RT_Policy_i.h60
-rw-r--r--TAO/tao/SHMIOP_Connect.cpp10
-rw-r--r--TAO/tao/SHMIOP_Transport.cpp2
-rw-r--r--TAO/tao/UIOP_Connect.cpp15
-rw-r--r--TAO/tao/UIOP_Transport.cpp2
-rw-r--r--TAO/tao/Version.h4
-rw-r--r--TAO/tao/Wait_On_Leader_Follower.cpp6
-rw-r--r--TAO/tao/corba.h4
45 files changed, 573 insertions, 341 deletions
diff --git a/TAO/tao/Acceptor_Impl.cpp b/TAO/tao/Acceptor_Impl.cpp
index be3f177f38f..b29f2481308 100644
--- a/TAO/tao/Acceptor_Impl.cpp
+++ b/TAO/tao/Acceptor_Impl.cpp
@@ -77,10 +77,24 @@ TAO_Concurrency_Strategy<SVC_HANDLER>::activate_svc_handler (SVC_HANDLER *sh,
TAO_Server_Strategy_Factory *f =
this->orb_core_->server_factory ();
+ // thread-per-connection concurrency model
+
if (f->activate_server_connections ())
return sh->activate (f->server_connection_thread_flags (),
f->server_connection_thread_count ());
+ // reactive concurrency model
+
+ // Keep track of open connections so that they can be explicitly
+ // removed from the reactor prior to shutting down the ORB. This is
+ // particularly important for dynamically loaded ORBs where an
+ // application level reactor, such as the Singleton reactor, is used
+ // instead of an ORB created one. Register the handle (not handler)
+ // associated with the connection that was just accepted with the
+ // ORB Core.
+ if (this->orb_core_->register_handle (sh->get_handle ()) != 0)
+ return -1;
+
return this->orb_core_->reactor ()->register_handler
(sh, ACE_Event_Handler::READ_MASK);
}
diff --git a/TAO/tao/Acceptor_Registry.cpp b/TAO/tao/Acceptor_Registry.cpp
index 08ec327b1f1..2b5cdb38005 100644
--- a/TAO/tao/Acceptor_Registry.cpp
+++ b/TAO/tao/Acceptor_Registry.cpp
@@ -228,6 +228,11 @@ TAO_Acceptor_Registry::open (TAO_ORB_Core *orb_core,
}
}
+ // No longer need the endpoint set since all associated acceptors
+ // have been opened by now. Reclaim the memory used by the endpoint
+ // set.
+ endpoint_set.reset ();
+
return 0;
}
diff --git a/TAO/tao/Buffering_Constraint_Policy.cpp b/TAO/tao/Buffering_Constraint_Policy.cpp
index 7439c0fd435..7858f6f5b87 100644
--- a/TAO/tao/Buffering_Constraint_Policy.cpp
+++ b/TAO/tao/Buffering_Constraint_Policy.cpp
@@ -25,6 +25,7 @@ TAO_Buffering_Constraint_Policy::TAO_Buffering_Constraint_Policy (const TAO_Buff
CORBA::PolicyType
TAO_Buffering_Constraint_Policy::policy_type (CORBA_Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
return TAO::BUFFERING_CONSTRAINT_POLICY_TYPE;
}
@@ -66,6 +67,7 @@ TAO_Buffering_Constraint_Policy::buffering_constraint (CORBA::Environment &)
CORBA::Policy_ptr
TAO_Buffering_Constraint_Policy::copy (CORBA_Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_Buffering_Constraint_Policy* servant = 0;
ACE_NEW_THROW_EX (servant,
@@ -78,6 +80,7 @@ TAO_Buffering_Constraint_Policy::copy (CORBA_Environment &ACE_TRY_ENV)
void
TAO_Buffering_Constraint_Policy::destroy (CORBA_Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
}
diff --git a/TAO/tao/Buffering_Constraint_Policy.h b/TAO/tao/Buffering_Constraint_Policy.h
index 10bc3d63486..c3a904ec5f9 100644
--- a/TAO/tao/Buffering_Constraint_Policy.h
+++ b/TAO/tao/Buffering_Constraint_Policy.h
@@ -71,11 +71,14 @@ public:
ACE_THROW_SPEC (());
void get_buffering_constraint (TAO::BufferingConstraint &) const;
- virtual CORBA::PolicyType policy_type (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
+ virtual CORBA::PolicyType policy_type (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
- virtual CORBA::Policy_ptr copy (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
+ virtual CORBA::Policy_ptr copy (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
- virtual void destroy (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
+ virtual void destroy (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
private:
TAO::BufferingConstraint buffering_constraint_;
diff --git a/TAO/tao/CONV_FRAMEC.i b/TAO/tao/CONV_FRAMEC.i
index 5d07522a858..811efdeeb48 100644
--- a/TAO/tao/CONV_FRAMEC.i
+++ b/TAO/tao/CONV_FRAMEC.i
@@ -43,8 +43,8 @@ CONV_FRAME::CodeSetComponent_var::operator= (const CONV_FRAME::CodeSetComponent_
if (this != &p)
{
delete this->ptr_;
- ACE_NEW_RETURN (this->ptr_,
- CONV_FRAME::CodeSetComponent (*p.ptr_),
+ ACE_NEW_RETURN (this->ptr_,
+ CONV_FRAME::CodeSetComponent (*p.ptr_),
*this);
}
return *this;
@@ -290,6 +290,7 @@ CONV_FRAME::CodeSetComponent_out::operator-> (void)
{
result = CONV_FRAME::CodeSetComponent::_TAO_Unbounded_Sequence_CONV_FRAME_CodeSetComponent__tao_seq_CodeSetId::allocbuf (this->length_);
this->buffer_ = result;
+ this->release_ = 1;
}
else
{
@@ -386,8 +387,8 @@ CONV_FRAME::CodeSetComponent::_tao_seq_CodeSetId_var::operator= (const CONV_FRAM
if (this != &p)
{
delete this->ptr_;
- ACE_NEW_RETURN (this->ptr_,
- CONV_FRAME::CodeSetComponent::_tao_seq_CodeSetId (*p.ptr_),
+ ACE_NEW_RETURN (this->ptr_,
+ CONV_FRAME::CodeSetComponent::_tao_seq_CodeSetId (*p.ptr_),
*this);
}
return *this;
@@ -572,8 +573,8 @@ CONV_FRAME::CodeSetComponentInfo_var::operator= (const CONV_FRAME::CodeSetCompon
if (this != &p)
{
delete this->ptr_;
- ACE_NEW_RETURN (this->ptr_,
- CONV_FRAME::CodeSetComponentInfo (*p.ptr_),
+ ACE_NEW_RETURN (this->ptr_,
+ CONV_FRAME::CodeSetComponentInfo (*p.ptr_),
*this);
}
return *this;
@@ -743,8 +744,8 @@ CONV_FRAME::CodeSetContext_var::operator= (const CONV_FRAME::CodeSetContext_var
if (this != &p)
{
delete this->ptr_;
- ACE_NEW_RETURN (this->ptr_,
- CONV_FRAME::CodeSetContext (*p.ptr_),
+ ACE_NEW_RETURN (this->ptr_,
+ CONV_FRAME::CodeSetContext (*p.ptr_),
*this);
}
return *this;
diff --git a/TAO/tao/Client_Priority_Policy.cpp b/TAO/tao/Client_Priority_Policy.cpp
index 5966730dd1d..d93c9fc35e8 100644
--- a/TAO/tao/Client_Priority_Policy.cpp
+++ b/TAO/tao/Client_Priority_Policy.cpp
@@ -33,6 +33,7 @@ TAO_Client_Priority_Policy::priority_specification (CORBA::Environment &)
CORBA::PolicyType
TAO_Client_Priority_Policy::policy_type (CORBA_Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
return TAO::CLIENT_PRIORITY_POLICY_TYPE;
}
@@ -70,6 +71,7 @@ TAO_Client_Priority_Policy::clone (void) const
CORBA::Policy_ptr
TAO_Client_Priority_Policy::copy (CORBA_Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
// Future policy implementors: notice how the following code is
// exception safe!
@@ -85,6 +87,7 @@ TAO_Client_Priority_Policy::copy (CORBA_Environment &ACE_TRY_ENV)
void
TAO_Client_Priority_Policy::destroy (CORBA_Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
}
diff --git a/TAO/tao/Client_Priority_Policy.h b/TAO/tao/Client_Priority_Policy.h
index 99792591e34..da5796b4ae8 100644
--- a/TAO/tao/Client_Priority_Policy.h
+++ b/TAO/tao/Client_Priority_Policy.h
@@ -76,13 +76,16 @@ public:
ACE_THROW_SPEC (());
virtual CORBA::PolicyType policy_type (
CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()
- );
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Policy_ptr copy (
CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()
- );
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual void destroy (
CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()
- );
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException));
private:
TAO::PrioritySpecification priority_spec_;
diff --git a/TAO/tao/Connector_Registry.cpp b/TAO/tao/Connector_Registry.cpp
index 1a89726d964..c3ae5f7c7de 100644
--- a/TAO/tao/Connector_Registry.cpp
+++ b/TAO/tao/Connector_Registry.cpp
@@ -146,6 +146,11 @@ TAO_Connector_Registry::preconnect (TAO_ORB_Core *orb_core,
(*connector)->preconnect (i->c_str ());
}
+ // No longer need the preconnect set since all associated
+ // preconnections have been opened by now. Reclaim the memory used
+ // by the preconnect set.
+ preconnections.reset ();
+
return 0; // Success
}
diff --git a/TAO/tao/DynAny_i.cpp b/TAO/tao/DynAny_i.cpp
index 45dd8c1e749..4fb549e3879 100644
--- a/TAO/tao/DynAny_i.cpp
+++ b/TAO/tao/DynAny_i.cpp
@@ -76,8 +76,8 @@ TAO_DynAny_i::TAO_DynAny_i (const CORBA_Any& any)
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
- // @@ Is the typecode duplicate in Any.type()???
- int tk = unalias (any.type (), ACE_TRY_ENV);
+ CORBA::TypeCode_var tc = any.type ();
+ int tk = unalias (tc.in (), ACE_TRY_ENV);
ACE_TRY_CHECK;
switch (tk)
{
@@ -122,18 +122,19 @@ TAO_DynAny_i::~TAO_DynAny_i (void)
CORBA::TypeCode_ptr
TAO_DynAny_i::type (CORBA::Environment &)
{
- return CORBA_TypeCode::_duplicate (this->value_.type ());
+ return this->value_.type ();
}
void
TAO_DynAny_i::assign (CORBA_DynAny_ptr dyn_any,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TypeCode_ptr tp = dyn_any->type (ACE_TRY_ENV);
+ CORBA::TypeCode_var tp = dyn_any->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::Boolean equal = this->value_.type ()->equal (tp,
- ACE_TRY_ENV);
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::Boolean equal = tc->equal (tp.in (),
+ ACE_TRY_ENV);
ACE_CHECK;
if (equal)
@@ -150,12 +151,15 @@ TAO_DynAny_i::assign (CORBA_DynAny_ptr dyn_any,
CORBA_DynAny_ptr
TAO_DynAny_i::copy (CORBA::Environment &ACE_TRY_ENV)
{
- TAO_DynAny_i* tmp = new TAO_DynAny_i (this->value_);
-
- CORBA_DynAny_ptr retval = tmp->_this (ACE_TRY_ENV);
- ACE_CHECK_RETURN (0);
+ TAO_DynAny_i* tmp = 0;
+ ACE_NEW_RETURN (tmp,
+ TAO_DynAny_i (this->value_),
+ CORBA::DynAny::_nil ());
+
+ CORBA_DynAny_var retval = tmp->_this (ACE_TRY_ENV);
+ ACE_CHECK_RETURN (CORBA::DynAny::_nil ());
- return retval;
+ return retval._retn ();
}
void
@@ -168,9 +172,11 @@ void
TAO_DynAny_i::from_any (const CORBA_Any& any,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::Boolean equal =
- this->value_.type ()->equal (any.type (),
- ACE_TRY_ENV);
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TypeCode_var any_tc = any.type ();
+
+ CORBA::Boolean equal = tc->equal (any_tc.in (),
+ ACE_TRY_ENV);
ACE_CHECK;
if (!equal || any._tao_get_cdr () == 0)
@@ -235,7 +241,8 @@ void
TAO_DynAny_i::insert_boolean (CORBA::Boolean value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -254,7 +261,8 @@ void
TAO_DynAny_i::insert_octet (CORBA::Octet value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -273,7 +281,8 @@ void
TAO_DynAny_i::insert_char (CORBA::Char value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -292,7 +301,8 @@ void
TAO_DynAny_i::insert_short (CORBA::Short value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -310,7 +320,8 @@ void
TAO_DynAny_i::insert_ushort (CORBA::UShort value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -328,7 +339,8 @@ void
TAO_DynAny_i::insert_long (CORBA::Long value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -346,7 +358,8 @@ void
TAO_DynAny_i::insert_ulong (CORBA::ULong value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -364,7 +377,8 @@ void
TAO_DynAny_i::insert_float (CORBA::Float value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -382,7 +396,8 @@ void
TAO_DynAny_i::insert_double (CORBA::Double value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -400,7 +415,8 @@ void
TAO_DynAny_i::insert_string (const char * value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -418,7 +434,8 @@ void
TAO_DynAny_i::insert_reference (CORBA::Object_ptr value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -429,7 +446,10 @@ TAO_DynAny_i::insert_reference (CORBA::Object_ptr value,
TAO_OutputCDR stream;
if (!(stream << obj.in ()))
ACE_THROW (CORBA::MARSHAL ());
- this->value_._tao_replace (this->value_.type (),
+
+ CORBA::TypeCode_var tc = this->value_.type ();
+
+ this->value_._tao_replace (tc.in (),
TAO_ENCAP_BYTE_ORDER,
stream.begin (),
1,
@@ -446,7 +466,8 @@ void
TAO_DynAny_i::insert_typecode (CORBA::TypeCode_ptr value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -464,7 +485,8 @@ void
TAO_DynAny_i::insert_longlong (CORBA::LongLong value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -482,8 +504,9 @@ void
TAO_DynAny_i::insert_ulonglong (CORBA::ULongLong value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = unalias (this->value_.type (),
- ACE_TRY_ENV);
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
+ ACE_TRY_ENV);
ACE_CHECK;
if (kind == CORBA::tk_ulonglong)
@@ -500,7 +523,8 @@ void
TAO_DynAny_i::insert_wchar (CORBA::WChar value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -519,7 +543,8 @@ void
TAO_DynAny_i::insert_any (const CORBA::Any& value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (this->value_.type (),
+ CORBA::TypeCode_var tc = this->value_.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -777,7 +802,8 @@ CORBA_DynAny_ptr
TAO_DynAny_i::create_dyn_any (const CORBA_Any &any,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (any.type (),
+ CORBA::TypeCode_var tc = any.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (CORBA_DynAny::_nil ());
diff --git a/TAO/tao/DynArray_i.cpp b/TAO/tao/DynArray_i.cpp
index c49061ad68b..11ff159b57e 100644
--- a/TAO/tao/DynArray_i.cpp
+++ b/TAO/tao/DynArray_i.cpp
@@ -43,7 +43,8 @@ TAO_DynArray_i::TAO_DynArray_i (const CORBA_Any& any)
if (kind == CORBA::tk_array)
{
- CORBA::ULong numfields = this->get_arg_length (any.type (),
+ CORBA::TypeCode_var tc = any.type ();
+ CORBA::ULong numfields = this->get_arg_length (tc.in (),
ACE_TRY_ENV);
ACE_TRY_CHECK;
// Resize the array.
@@ -183,11 +184,14 @@ TAO_DynArray_i::set_elements (const CORBA_AnySeq& value,
this->get_element_type (ACE_TRY_ENV);
ACE_CHECK;
+ CORBA::TypeCode_var value_tc;
+
for (CORBA::ULong i = 0; i < length; i++)
{
// Check each arg element for type match.
- CORBA::Boolean equal = value[i].type ()->equal (element_type.in (),
- ACE_TRY_ENV);
+ value_tc = value[i].type ();
+ CORBA::Boolean equal = value_tc->equal (element_type.in (),
+ ACE_TRY_ENV);
ACE_CHECK;
if (equal)
@@ -273,7 +277,8 @@ void
TAO_DynArray_i::from_any (const CORBA_Any& any,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::Boolean equal = this->type_.in ()->equal (any.type (),
+ CORBA::TypeCode_var tc = any.type ();
+ CORBA::Boolean equal = this->type_.in ()->equal (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -285,7 +290,7 @@ TAO_DynArray_i::from_any (const CORBA_Any& any,
any._tao_byte_order ());
CORBA::ULong length = this->da_members_.size ();
- CORBA::ULong arg_length = this->get_arg_length (any.type (),
+ CORBA::ULong arg_length = this->get_arg_length (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
diff --git a/TAO/tao/DynEnum_i.cpp b/TAO/tao/DynEnum_i.cpp
index 60fbad19c2b..c8cacd8ab99 100644
--- a/TAO/tao/DynEnum_i.cpp
+++ b/TAO/tao/DynEnum_i.cpp
@@ -209,7 +209,8 @@ void
TAO_DynEnum_i::from_any (const CORBA_Any& any,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::TCKind kind = TAO_DynAny_i::unalias (any.type (),
+ CORBA::TypeCode_var tc = any.type ();
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
diff --git a/TAO/tao/DynSequence_i.cpp b/TAO/tao/DynSequence_i.cpp
index 1fe5afe5dfc..fa392d2dd96 100644
--- a/TAO/tao/DynSequence_i.cpp
+++ b/TAO/tao/DynSequence_i.cpp
@@ -193,11 +193,14 @@ TAO_DynSequence_i::set_elements (const CORBA_AnySeq& value,
this->get_element_type (ACE_TRY_ENV);
ACE_CHECK;
+ CORBA::TypeCode_var value_tc;
+
for (CORBA::ULong i = 0; i < length; i++)
{
// Check each arg element for type match.
- CORBA::Boolean equal = value[i].type ()->equal (element_type.in (),
- ACE_TRY_ENV);
+ value_tc = value[i].type ();
+ CORBA::Boolean equal = value_tc->equal (element_type.in (),
+ ACE_TRY_ENV);
ACE_CHECK;
if (equal)
@@ -283,7 +286,8 @@ void
TAO_DynSequence_i::from_any (const CORBA_Any& any,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::Boolean equal = this->type_.in ()->equal (any.type (),
+ CORBA::TypeCode_var tc = any.type ();
+ CORBA::Boolean equal = this->type_.in ()->equal (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
diff --git a/TAO/tao/DynStruct_i.cpp b/TAO/tao/DynStruct_i.cpp
index f9856f2d245..07af02fadf4 100644
--- a/TAO/tao/DynStruct_i.cpp
+++ b/TAO/tao/DynStruct_i.cpp
@@ -200,6 +200,8 @@ TAO_DynStruct_i::set_members (const CORBA::NameValuePairSeq& value,
// Check for length match.
if (length == this->da_members_.size ())
{
+ CORBA::TypeCode_var value_tc;
+
for (CORBA::ULong i = 0; i < length; i++)
{
// Check for type and name match.
@@ -207,7 +209,9 @@ TAO_DynStruct_i::set_members (const CORBA::NameValuePairSeq& value,
ACE_TRY_ENV);
ACE_CHECK;
- if (value[i].value.type ()->equal (tc.in ())
+ value_tc = value[i].value.type ();
+
+ if (value_tc->equal (tc.in ())
&& !ACE_OS::strcmp (value[i].id,
this->type_.in ()->member_name (i)))
{
@@ -298,7 +302,8 @@ void
TAO_DynStruct_i::from_any (const CORBA_Any& any,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::Boolean equal = this->type_.in ()->equal (any.type (),
+ CORBA::TypeCode_var tc = any.type ();
+ CORBA::Boolean equal = this->type_.in ()->equal (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -940,10 +945,10 @@ TAO_DynStruct_i::get_boolean (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -979,10 +984,10 @@ TAO_DynStruct_i::get_octet (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -1018,10 +1023,10 @@ TAO_DynStruct_i::get_char (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -1057,10 +1062,10 @@ TAO_DynStruct_i::get_short (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -1096,10 +1101,10 @@ TAO_DynStruct_i::get_ushort (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -1135,10 +1140,10 @@ TAO_DynStruct_i::get_long (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -1174,10 +1179,10 @@ TAO_DynStruct_i::get_ulong (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -1213,10 +1218,10 @@ TAO_DynStruct_i::get_float (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -1252,10 +1257,10 @@ TAO_DynStruct_i::get_double (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -1291,10 +1296,10 @@ TAO_DynStruct_i::get_string (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -1330,10 +1335,10 @@ TAO_DynStruct_i::get_reference (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -1369,10 +1374,10 @@ TAO_DynStruct_i::get_typecode (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -1412,10 +1417,10 @@ TAO_DynStruct_i::get_longlong (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (val);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (val);
@@ -1451,10 +1456,10 @@ TAO_DynStruct_i::get_ulonglong (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -1490,10 +1495,10 @@ TAO_DynStruct_i::get_wchar (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
@@ -1529,10 +1534,10 @@ TAO_DynStruct_i::get_any (CORBA::Environment &ACE_TRY_ENV)
if (dp)
{
- CORBA_TypeCode_ptr tc = dp->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = dp->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (0);
diff --git a/TAO/tao/DynUnion_i.cpp b/TAO/tao/DynUnion_i.cpp
index 6011b52c57d..d640ca83e97 100644
--- a/TAO/tao/DynUnion_i.cpp
+++ b/TAO/tao/DynUnion_i.cpp
@@ -43,7 +43,8 @@ TAO_DynUnion_i::TAO_DynUnion_i (const CORBA_Any& any)
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
- int tk = TAO_DynAny_i::unalias (any.type (),
+ CORBA::TypeCode_var tc = any.type ();
+ int tk = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_TRY_CHECK;
@@ -139,7 +140,7 @@ TAO_DynUnion_i::set_as_default (CORBA::Boolean /* set_as_default */,
CORBA_DynAny_ptr
TAO_DynUnion_i::discriminator (CORBA::Environment &)
{
- return this->discriminator_.in ();
+ return CORBA::DynAny::_duplicate (this->discriminator_.in ());
}
CORBA::TCKind
@@ -158,7 +159,7 @@ TAO_DynUnion_i::discriminator_kind (CORBA::Environment& ACE_TRY_ENV)
CORBA_DynAny_ptr
TAO_DynUnion_i::member (CORBA::Environment &)
{
- return this->member_.in ();
+ return CORBA::DynAny::_duplicate (this->member_.in ());
}
char*
@@ -300,7 +301,8 @@ void
TAO_DynUnion_i::from_any (const CORBA_Any& any,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA::Boolean equal = this->type_.in ()->equal (any.type (),
+ CORBA::TypeCode_var tc = any.type ();
+ CORBA::Boolean equal = this->type_.in ()->equal (tc.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -502,10 +504,10 @@ void
TAO_DynUnion_i::insert_boolean (CORBA::Boolean value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -632,10 +634,10 @@ void
TAO_DynUnion_i::insert_char (CORBA::Char value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -697,10 +699,10 @@ void
TAO_DynUnion_i::insert_short (CORBA::Short value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -762,10 +764,10 @@ void
TAO_DynUnion_i::insert_long (CORBA::Long value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -827,10 +829,10 @@ void
TAO_DynUnion_i::insert_ushort (CORBA::UShort value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -892,10 +894,10 @@ void
TAO_DynUnion_i::insert_ulong (CORBA::ULong value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -957,10 +959,10 @@ void
TAO_DynUnion_i::insert_float (CORBA::Float value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -1022,10 +1024,10 @@ void
TAO_DynUnion_i::insert_double (CORBA::Double value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -1087,10 +1089,10 @@ void
TAO_DynUnion_i::insert_string (const char* value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -1152,10 +1154,10 @@ void
TAO_DynUnion_i::insert_reference (CORBA::Object_ptr value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -1217,10 +1219,10 @@ void
TAO_DynUnion_i::insert_typecode (CORBA::TypeCode_ptr value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -1282,10 +1284,10 @@ void
TAO_DynUnion_i::insert_longlong (CORBA::LongLong value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -1347,10 +1349,10 @@ void
TAO_DynUnion_i::insert_ulonglong (CORBA::ULongLong value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -1412,10 +1414,10 @@ void
TAO_DynUnion_i::insert_wchar (CORBA::WChar value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -1477,10 +1479,10 @@ void
TAO_DynUnion_i::insert_any (const CORBA::Any& value,
CORBA::Environment &ACE_TRY_ENV)
{
- CORBA_TypeCode_ptr type = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var type = this->member_->type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind kind = TAO_DynAny_i::unalias (type,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (type.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -1545,10 +1547,10 @@ TAO_DynUnion_i::get_boolean (CORBA::Environment &ACE_TRY_ENV)
{
CORBA::Boolean retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1571,10 +1573,10 @@ TAO_DynUnion_i::get_octet (CORBA::Environment &ACE_TRY_ENV)
{
CORBA::Octet retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1597,10 +1599,10 @@ TAO_DynUnion_i::get_char (CORBA::Environment &ACE_TRY_ENV)
{
CORBA::Char retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1623,10 +1625,10 @@ TAO_DynUnion_i::get_short (CORBA::Environment &ACE_TRY_ENV)
{
CORBA::Short retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1649,10 +1651,10 @@ TAO_DynUnion_i::get_long (CORBA::Environment &ACE_TRY_ENV)
{
CORBA::Long retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1675,10 +1677,10 @@ TAO_DynUnion_i::get_ushort(CORBA::Environment &ACE_TRY_ENV)
{
CORBA::UShort retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1701,10 +1703,10 @@ TAO_DynUnion_i::get_ulong (CORBA::Environment &ACE_TRY_ENV)
{
CORBA::ULong retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1727,10 +1729,10 @@ TAO_DynUnion_i::get_float (CORBA::Environment &ACE_TRY_ENV)
{
CORBA::Float retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1753,10 +1755,10 @@ TAO_DynUnion_i::get_double (CORBA::Environment &ACE_TRY_ENV)
{
CORBA::Double retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1779,10 +1781,10 @@ TAO_DynUnion_i::get_string (CORBA::Environment &ACE_TRY_ENV)
{
char * retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1805,10 +1807,10 @@ TAO_DynUnion_i::get_typecode (CORBA::Environment &ACE_TRY_ENV)
{
CORBA::TypeCode_ptr retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1831,10 +1833,10 @@ TAO_DynUnion_i::get_reference (CORBA::Environment &ACE_TRY_ENV)
{
CORBA::Object_ptr retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1861,10 +1863,10 @@ TAO_DynUnion_i::get_longlong (CORBA::Environment &ACE_TRY_ENV)
CORBA::LongLong retval = 0;
#endif /* ! ACE_LACKS_LONGLONG_T */
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1887,10 +1889,10 @@ TAO_DynUnion_i::get_ulonglong (CORBA::Environment &ACE_TRY_ENV)
{
CORBA::ULongLong retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1913,10 +1915,10 @@ TAO_DynUnion_i::get_wchar (CORBA::Environment &ACE_TRY_ENV)
{
CORBA::WChar retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -1939,10 +1941,10 @@ TAO_DynUnion_i::get_any (CORBA::Environment &ACE_TRY_ENV)
{
CORBA::Any_ptr retval = 0;
- CORBA_TypeCode_ptr tc = this->member_->type (ACE_TRY_ENV);
+ CORBA_TypeCode_var tc = this->member_->type (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
- CORBA::TCKind kind = TAO_DynAny_i::unalias (tc,
+ CORBA::TCKind kind = TAO_DynAny_i::unalias (tc.in (),
ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -2119,11 +2121,12 @@ TAO_DynUnion_i::set_from_any (const CORBA_Any& any,
TAO_InputCDR cdr (mb,
any._tao_byte_order ());
- CORBA_TypeCode_ptr disc_tc =
- any.type ()->discriminator_type (ACE_TRY_ENV);
+ CORBA::TypeCode_var tc = any.type ();
+
+ CORBA_TypeCode_var disc_tc = tc->discriminator_type (ACE_TRY_ENV);
ACE_CHECK;
- CORBA_Any disc_any (disc_tc,
+ CORBA_Any disc_any (disc_tc.in (),
0,
cdr.byte_order (),
cdr.start ());
@@ -2140,12 +2143,12 @@ TAO_DynUnion_i::set_from_any (const CORBA_Any& any,
ACE_CHECK;
// Move to the next field in the CDR stream.
- (void) TAO_Marshal_Object::perform_skip (disc_tc,
+ (void) TAO_Marshal_Object::perform_skip (disc_tc.in (),
&cdr,
ACE_TRY_ENV);
ACE_CHECK;
- CORBA::ULong count = any.type ()->member_count (ACE_TRY_ENV);
+ CORBA::ULong count = tc->member_count (ACE_TRY_ENV);
ACE_CHECK;
CORBA::ULong i;
@@ -2159,14 +2162,18 @@ TAO_DynUnion_i::set_from_any (const CORBA_Any& any,
ACE_TRY_ENV);
ACE_CHECK;
+ CORBA::TypeCode_var label_tc;
+
// Get the index.
for (i = 0; i < count; i++)
{
- CORBA_Any label_any = *any.type ()->member_label (i,
- ACE_TRY_ENV);
+ CORBA_Any label_any = *tc->member_label (i,
+ ACE_TRY_ENV);
ACE_CHECK;
- CORBA::TCKind label_kind = label_any.type ()->kind (ACE_TRY_ENV);
+ label_tc = label_any.type ();
+
+ CORBA::TCKind label_kind = label_tc->kind (ACE_TRY_ENV);
ACE_CHECK;
// If there is a default index, note the value but don't call
@@ -2199,8 +2206,8 @@ TAO_DynUnion_i::set_from_any (const CORBA_Any& any,
}
CORBA::TypeCode_var member_tc =
- any.type ()->member_type (this->current_index_,
- ACE_TRY_ENV);
+ tc->member_type (this->current_index_,
+ ACE_TRY_ENV);
ACE_CHECK;
CORBA_Any member_any (member_tc.in (),
diff --git a/TAO/tao/IIOP_Connect.cpp b/TAO/tao/IIOP_Connect.cpp
index 93356ae0be4..6477b4fffd3 100644
--- a/TAO/tao/IIOP_Connect.cpp
+++ b/TAO/tao/IIOP_Connect.cpp
@@ -9,7 +9,7 @@
#include "tao/Messaging_Policy_i.h"
#include "tao/GIOP_Message_Lite.h"
#include "tao/GIOP_Message_Acceptors.h"
-
+#include "tao/Server_Strategy_Factory.h"
#if !defined (__ACE_INLINE__)
# include "tao/IIOP_Connect.i"
@@ -153,14 +153,18 @@ TAO_IIOP_Server_Connection_Handler::open (void*)
// completely connected.
ACE_INET_Addr addr;
+ char client[MAXHOSTNAMELEN + 16];
+
+ // Get the peername.
if (this->peer ().get_remote_addr (addr) == -1)
return -1;
+ // Verify that we can resolve the peer hostname.
+ else if (addr.addr_to_string (client, sizeof (client)) == -1)
+ return -1;
+
if (TAO_debug_level > 0)
{
- char client[MAXHOSTNAMELEN + 16];
- (void) addr.addr_to_string (client, sizeof (client));
-
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("TAO (%P|%t) IIOP connection from client")
ACE_TEXT ("<%s> on %d\n"),
@@ -208,14 +212,26 @@ TAO_IIOP_Server_Connection_Handler::handle_close (ACE_HANDLE handle,
{
if (TAO_orbdebug)
ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) IIOP_Server_Connection_Handler::handle_close ")
+ ACE_TEXT ("TAO (%P|%t) ")
+ ACE_TEXT ("IIOP_Server_Connection_Handler::handle_close ")
ACE_TEXT ("(%d, %d)\n"),
handle,
rm));
--this->refcount_;
if (this->refcount_ == 0)
- return TAO_SVC_HANDLER::handle_close (handle, rm);
+ {
+ // Remove the handle from the ORB Core's handle set so that it
+ // isn't included in the set that is passed to the reactor upon
+ // ORB destruction.
+ TAO_Server_Strategy_Factory *f =
+ this->orb_core_->server_factory ();
+
+ if (f->activate_server_connections () == 0)
+ (void) this->orb_core_->remove_handle (handle);
+
+ return TAO_SVC_HANDLER::handle_close (handle, rm);
+ }
return 0;
}
diff --git a/TAO/tao/IIOP_Connector.cpp b/TAO/tao/IIOP_Connector.cpp
index 48789e41165..46bdf20f4df 100644
--- a/TAO/tao/IIOP_Connector.cpp
+++ b/TAO/tao/IIOP_Connector.cpp
@@ -184,7 +184,7 @@ template class ACE_Hash_Cache_Map_Manager<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY,
template class ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>;
-#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
#if (TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0)
template class ACE_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>;
template class ACE_LFU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>;
diff --git a/TAO/tao/IIOP_Transport.cpp b/TAO/tao/IIOP_Transport.cpp
index 0fb3a7f926f..e83df874ba5 100644
--- a/TAO/tao/IIOP_Transport.cpp
+++ b/TAO/tao/IIOP_Transport.cpp
@@ -20,6 +20,10 @@
#if !defined (__ACE_INLINE__)
# include "tao/IIOP_Transport.i"
#endif /* ! __ACE_INLINE__ */
+
+ACE_RCSID (tao, IIOP_Transport, "$Id$")
+
+
#if defined (ACE_ENABLE_TIMEPROBES)
static const char *TAO_Transport_Timeprobe_Description[] =
diff --git a/TAO/tao/Invocation.cpp b/TAO/tao/Invocation.cpp
index 152518b20dd..2f04a64981b 100644
--- a/TAO/tao/Invocation.cpp
+++ b/TAO/tao/Invocation.cpp
@@ -683,6 +683,13 @@ TAO_GIOP_Twoway_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
ACE_TRY_ENV);
}
+void
+TAO_GIOP_Twoway_Invocation::reset_reply_received (void)
+{
+ this->rd_.reply_received() = 0;
+}
+
+
int
TAO_GIOP_Twoway_Invocation::invoke (CORBA::ExceptionList_ptr exceptions,
CORBA::Environment &ACE_TRY_ENV)
diff --git a/TAO/tao/Invocation.h b/TAO/tao/Invocation.h
index 92d7cd21b6d..f02ea0ec2ff 100644
--- a/TAO/tao/Invocation.h
+++ b/TAO/tao/Invocation.h
@@ -237,6 +237,9 @@ public:
TAO_InputCDR &inp_stream (void);
// return the underlying input stream
+
+ void reset_reply_received (void);
+ // Reset the reply status
private:
int invoke_i (CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException));
diff --git a/TAO/tao/LocalObject.cpp b/TAO/tao/LocalObject.cpp
index 0e836e00e3e..420fdf5f789 100644
--- a/TAO/tao/LocalObject.cpp
+++ b/TAO/tao/LocalObject.cpp
@@ -160,6 +160,17 @@ CORBA::LocalObject::_get_implementation (CORBA::Environment &ACE_TRY_ENV)
#endif /* TAO_HAS_MINIMUM_CORBA */
// ****************************************************************
+void
+TAO_Local_RefCounted_Object::_add_ref (void)
+{
+ this->_incr_refcnt ();
+}
+
+void
+TAO_Local_RefCounted_Object::_remove_ref (void)
+{
+ this->_decr_refcnt ();
+}
#if (TAO_HAS_CORBA_MESSAGING == 1)
@@ -199,16 +210,6 @@ CORBA::LocalObject::_validate_connection (CORBA::PolicyList_out,
ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
}
-void
-TAO_Local_RefCounted_Object::_add_ref (void)
-{
- this->_incr_refcnt ();
-}
-void
-TAO_Local_RefCounted_Object::_remove_ref (void)
-{
- this->_decr_refcnt ();
-}
#endif /* TAO_HAS_CORBA_MESSAGING == 1 */
diff --git a/TAO/tao/Messaging_Policy_i.cpp b/TAO/tao/Messaging_Policy_i.cpp
index a7abd7ed3ee..532eebe1b0b 100644
--- a/TAO/tao/Messaging_Policy_i.cpp
+++ b/TAO/tao/Messaging_Policy_i.cpp
@@ -32,6 +32,7 @@ TAO_RelativeRoundtripTimeoutPolicy::relative_expiry (CORBA::Environment &)
CORBA::PolicyType
TAO_RelativeRoundtripTimeoutPolicy::policy_type (CORBA_Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
// Future policy implementors: notice how this minimizes the
// footprint of the class.
@@ -72,6 +73,7 @@ TAO_RelativeRoundtripTimeoutPolicy::clone (void) const
CORBA::Policy_ptr
TAO_RelativeRoundtripTimeoutPolicy::copy (CORBA_Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
// Future policy implementors: notice how the following code is
// exception safe!
@@ -87,6 +89,7 @@ TAO_RelativeRoundtripTimeoutPolicy::copy (CORBA_Environment &ACE_TRY_ENV)
void
TAO_RelativeRoundtripTimeoutPolicy::destroy (CORBA_Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
}
@@ -129,6 +132,7 @@ TAO_Sync_Scope_Policy::TAO_Sync_Scope_Policy (const TAO_Sync_Scope_Policy &rhs)
CORBA::PolicyType
TAO_Sync_Scope_Policy::policy_type (CORBA_Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
return Messaging::SYNC_SCOPE_POLICY_TYPE;
}
@@ -163,13 +167,14 @@ TAO_Sync_Scope_Policy::clone (void) const
Messaging::SyncScope
TAO_Sync_Scope_Policy::synchronization (CORBA::Environment &)
- ACE_THROW_SPEC (())
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->synchronization_;
}
CORBA::Policy_ptr
TAO_Sync_Scope_Policy::copy (CORBA_Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_Sync_Scope_Policy *servant = 0;
ACE_NEW_THROW_EX (servant,
@@ -182,6 +187,7 @@ TAO_Sync_Scope_Policy::copy (CORBA_Environment &ACE_TRY_ENV)
void
TAO_Sync_Scope_Policy::destroy (CORBA_Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
}
diff --git a/TAO/tao/Messaging_Policy_i.h b/TAO/tao/Messaging_Policy_i.h
index d50c9bf834a..bf01ae04b58 100644
--- a/TAO/tao/Messaging_Policy_i.h
+++ b/TAO/tao/Messaging_Policy_i.h
@@ -64,11 +64,14 @@ public:
virtual TimeBase::TimeT relative_expiry (CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC (());
- virtual CORBA::PolicyType policy_type (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
+ virtual CORBA::PolicyType policy_type (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
- virtual CORBA::Policy_ptr copy (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
+ virtual CORBA::Policy_ptr copy (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
- virtual void destroy (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
+ virtual void destroy (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
void set_time_value (ACE_Time_Value &time_value);
// Change the CORBA representation to the ACE representation.
@@ -113,14 +116,18 @@ public:
// = The Messaging::SyncScopePolicy methods.
virtual Messaging::SyncScope synchronization (CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC (());
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
void get_synchronization (Messaging::SyncScope &synchronization) const;
- virtual CORBA::PolicyType policy_type (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
+ virtual CORBA::PolicyType policy_type (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
- virtual CORBA::Policy_ptr copy (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
+ virtual CORBA::Policy_ptr copy (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
- virtual void destroy (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
+ virtual void destroy (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
private:
diff --git a/TAO/tao/ORB_Core.cpp b/TAO/tao/ORB_Core.cpp
index ee0b11e5e0f..4e1982ce759 100644
--- a/TAO/tao/ORB_Core.cpp
+++ b/TAO/tao/ORB_Core.cpp
@@ -121,7 +121,8 @@ TAO_ORB_Core::TAO_ORB_Core (const char *orbid)
transport_sync_strategy_ (0),
svc_config_argc_ (0),
svc_config_argv_ (0),
- refcount_ (1)
+ refcount_ (1),
+ handle_set_ ()
{
ACE_NEW (this->poa_current_,
TAO_POA_Current);
@@ -1280,6 +1281,19 @@ TAO_ORB_Core::fini (void)
delete this->acceptor_registry_;
}
+ // Shutdown all open connections that are registered with the ORB
+ // Core. Note that the ACE_Event_Handler::DONT_CALL mask is NOT
+ // used here since the reactor should invoke each handle's
+ // corresponding ACE_Event_Handler::handle_close() method to ensure
+ // that the connection is shutdown gracefully.
+
+ // @@ Will the Server_Strategy_Factory still be around by the time
+ // this method is invoked? Specifically, is it possible that
+ // the Server_Strategy_Factory will already have been unloaded?
+ if (this->server_factory ()->activate_server_connections () == 0)
+ (void) this->reactor ()->remove_handler (this->handle_set_,
+ ACE_Event_Handler::ALL_EVENTS_MASK);
+
TAO_Internal::close_services ();
// @@ This is not needed since the default resource factory
@@ -1709,6 +1723,9 @@ TAO_ORB_Core::run (ACE_Time_Value *tv,
if (ret == -1)
return -1;
+ // Fetch the Reactor
+ ACE_Reactor *r = this->reactor ();
+
int result = 1;
// 1 to detect that nothing went wrong
@@ -1738,12 +1755,15 @@ TAO_ORB_Core::run (ACE_Time_Value *tv,
return result;
}
- ACE_Reactor *r = this->reactor ();
-
// Set the owning thread of the Reactor to the one which we're
// currently in. This is necessary b/c it's possible that the
// application is calling us from a thread other than that in which
// the Reactor's CTOR (which sets the owner) was called.
+ //
+ // We need to do this on every iteration because the reactor may be
+ // acquired by one of the client threads in the LF waiting
+ // strategy
+
r->owner (ACE_Thread::self ());
if (TAO_debug_level >= 3)
diff --git a/TAO/tao/ORB_Core.h b/TAO/tao/ORB_Core.h
index 920bb93c685..caf1b416a20 100644
--- a/TAO/tao/ORB_Core.h
+++ b/TAO/tao/ORB_Core.h
@@ -482,6 +482,16 @@ public:
CORBA::ULong _decr_refcnt (void);
// Reference counting...
+ int register_handle (ACE_HANDLE handle);
+ // Register the handle of an open connection with the ORB Core
+ // handle set. This handle set will be used to explicitly remove
+ // corresponding event handlers from the reactor.
+
+ int remove_handle (ACE_HANDLE handle);
+ // Remove <handle> from the ORB Core's handle set so that it
+ // isn't included in the set that is passed to the reactor upon ORB
+ // destruction.
+
protected:
int init (int &argc, char **argv, CORBA::Environment &ACE_TRY_ENV);
@@ -526,7 +536,7 @@ protected:
// = Data members.
TAO_Connector_Registry *connector_registry_;
- // The connector registry which all active connecters must register
+ // The connector registry which all active connectors must register
// themselves with.
TAO_Acceptor_Registry *acceptor_registry_;
@@ -700,6 +710,13 @@ protected:
CORBA::ULong refcount_;
// Number of outstanding references to this object.
+
+ ACE_Handle_Set handle_set_;
+ // Set of file descriptors corresponding to open connections. This
+ // handle set is used to explicitly deregister the connection event
+ // handlers from the Reactor. This is particularly important for
+ // dynamically loaded ORBs where an application level reactor, such
+ // as the Singleton reactor, is used instead of an ORB created one.
};
// ****************************************************************
diff --git a/TAO/tao/ORB_Core.i b/TAO/tao/ORB_Core.i
index f80f8a9694f..317c02a6049 100644
--- a/TAO/tao/ORB_Core.i
+++ b/TAO/tao/ORB_Core.i
@@ -25,6 +25,40 @@ TAO_ORB_Core::_decr_refcnt (void)
return 0;
}
+ACE_INLINE int
+TAO_ORB_Core::register_handle (ACE_HANDLE handle)
+{
+ if (handle == ACE_INVALID_HANDLE)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+
+ // Acquire a lock to ensure that modifications to the state within
+ // the handle set are atomic.
+ ACE_MT (ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, mon, this->lock_, -1));
+ this->handle_set_.set_bit (handle);
+
+ return 0;
+}
+
+ACE_INLINE int
+TAO_ORB_Core::remove_handle (ACE_HANDLE handle)
+{
+ if (handle == ACE_INVALID_HANDLE)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+
+ // Acquire a lock to ensure that modifications to the state within
+ // the handle set are atomic.
+ ACE_MT (ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, mon, this->lock_, -1));
+ this->handle_set_.clr_bit (handle);
+
+ return 0;
+}
+
ACE_INLINE ACE_Thread_Manager *
TAO_ORB_Core::thr_mgr (void)
{
diff --git a/TAO/tao/Object_Adapter.cpp b/TAO/tao/Object_Adapter.cpp
index 56740805c3f..bad62d109da 100644
--- a/TAO/tao/Object_Adapter.cpp
+++ b/TAO/tao/Object_Adapter.cpp
@@ -217,31 +217,6 @@ TAO_Object_Adapter::create_lock (int enable_locking,
return the_lock;
}
-
-void
-TAO_Object_Adapter::deactivate_i (CORBA::Boolean wait_for_completion,
- CORBA::Environment &ACE_TRY_ENV)
-{
- // If the ORB::shutdown operation is called, it makes a call on
- // deactivate with a TRUE etherealize_objects parameter for each POA
- // manager known in the process; the wait_for_completion parameter
- // to deactivate will be the same as the similarly named parameter
- // of ORB::shutdown.
-
- poa_manager_set::iterator end = this->poa_manager_set_.end ();
-
- for (poa_manager_set::iterator iterator = this->poa_manager_set_.begin ();
- iterator != end;
- ++iterator)
- {
- TAO_POA_Manager *poa_manager = *iterator;
- poa_manager->deactivate_i (1,
- wait_for_completion,
- ACE_TRY_ENV);
- ACE_CHECK;
- }
-}
-
void
TAO_Object_Adapter::dispatch_servant (const TAO_ObjectKey &key,
CORBA::ServerRequest &req,
diff --git a/TAO/tao/Object_Adapter.h b/TAO/tao/Object_Adapter.h
index dbe33564ea4..2f9e0f1737d 100644
--- a/TAO/tao/Object_Adapter.h
+++ b/TAO/tao/Object_Adapter.h
@@ -264,18 +264,8 @@ public:
static CORBA::ULong transient_poa_name_size (void);
- void deactivate (CORBA::Boolean wait_for_completion,
- CORBA::Environment &ACE_TRY_ENV);
-
- typedef ACE_Unbounded_Set<TAO_POA_Manager *> poa_manager_set;
-
- poa_manager_set poa_manager_set_;
-
protected:
- void deactivate_i (CORBA::Boolean wait_for_completion,
- CORBA::Environment &ACE_TRY_ENV);
-
int locate_servant_i (const TAO_ObjectKey &key,
CORBA_Environment &ACE_TRY_ENV);
diff --git a/TAO/tao/Object_Adapter.i b/TAO/tao/Object_Adapter.i
index 952c25ad506..2862b7d2d11 100644
--- a/TAO/tao/Object_Adapter.i
+++ b/TAO/tao/Object_Adapter.i
@@ -31,17 +31,6 @@ TAO_Object_Adapter::transient_poa_name_size ()
return TAO_Object_Adapter::transient_poa_name_size_;
}
-ACE_INLINE void
-TAO_Object_Adapter::deactivate (CORBA::Boolean wait_for_completion,
- CORBA::Environment &ACE_TRY_ENV)
-{
- // Lock access for the duration of this transaction.
- TAO_OBJECT_ADAPTER_GUARD;
-
- this->deactivate_i (wait_for_completion,
- ACE_TRY_ENV);
-}
-
ACE_INLINE int
TAO_Object_Adapter::locate_servant (const TAO_ObjectKey &key,
CORBA::Environment &ACE_TRY_ENV)
diff --git a/TAO/tao/POA.cpp b/TAO/tao/POA.cpp
index 83e035ecded..f869be901a5 100644
--- a/TAO/tao/POA.cpp
+++ b/TAO/tao/POA.cpp
@@ -530,11 +530,13 @@ TAO_POA::destroy_i (CORBA::Boolean etherealize_objects,
if (this->server_object_)
{
+ TAO_POA *root_poa = this->orb_core ().root_poa ();
+
PortableServer::ObjectId_var id =
- this->servant_to_id_i (this->server_object_, ACE_TRY_ENV);
+ root_poa->servant_to_id_i (this->server_object_, ACE_TRY_ENV);
ACE_CHECK;
- this->deactivate_object_i (id.in (), ACE_TRY_ENV);
+ root_poa->deactivate_object_i (id.in (), ACE_TRY_ENV);
ACE_CHECK;
this->server_object_->_remove_ref ();
@@ -4025,23 +4027,19 @@ TAO_POA::imr_notify_startup (CORBA_Environment &ACE_TRY_ENV)
CORBA::NO_MEMORY ());
ACE_CHECK;
- // @@ (brunsch) The server should really be in the root poa, but
- // there are locking issues...
-
- PortableServer::ObjectId_var id =
- PortableServer::string_to_ObjectId ("_tao_imr_server_object");
-
- this->activate_object_with_id_i (id.in (),
- this->server_object_,
- TAO_INVALID_PRIORITY,
- ACE_TRY_ENV);
+ // Activate the servant in the root poa.
+ TAO_POA *root_poa = this->orb_core ().root_poa ();
+ PortableServer::ObjectId_var id =
+ root_poa->activate_object_i (this->server_object_,
+ TAO_INVALID_PRIORITY,
+ ACE_TRY_ENV);
ACE_CHECK;
- CORBA::Object_var obj = this->id_to_reference_i (id.in (),
- ACE_TRY_ENV);
+ CORBA::Object_var obj = root_poa->id_to_reference_i (id.in (),
+ ACE_TRY_ENV);
ACE_CHECK;
- ImplementationRepository::ServerObject_ptr svr
+ ImplementationRepository::ServerObject_var svr
= ImplementationRepository::ServerObject::_narrow (obj.in (),
ACE_TRY_ENV);
ACE_CHECK;
@@ -4083,7 +4081,7 @@ TAO_POA::imr_notify_startup (CORBA_Environment &ACE_TRY_ENV)
imr_admin->server_is_running (this->name ().c_str (),
curr_addr.in (),
- svr,
+ svr.in (),
ACE_TRY_ENV);
ACE_CHECK;
diff --git a/TAO/tao/POA.h b/TAO/tao/POA.h
index 4b3ab5867ba..50069777f26 100644
--- a/TAO/tao/POA.h
+++ b/TAO/tao/POA.h
@@ -778,7 +778,7 @@ protected:
CORBA_Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableServer::POA::ServantAlreadyActive,
- PortableServer::POA::ObjectAlreadyActive,
+ PortableServer::POA::ObjectAlreadyActive,
PortableServer::POA::WrongPolicy));
void deactivate_all_objects_i (CORBA::Boolean etherealize_objects,
diff --git a/TAO/tao/POA.i b/TAO/tao/POA.i
index 8cfd90fb199..d8a177898ec 100644
--- a/TAO/tao/POA.i
+++ b/TAO/tao/POA.i
@@ -24,7 +24,7 @@ TAO_POA_Guard::TAO_POA_Guard (TAO_POA &poa,
{
if (!this->guard_.locked ())
ACE_THROW (
- CORBA::TRANSIENT (
+ CORBA::INTERNAL (
CORBA_SystemException::_tao_minor_code (
TAO_GUARD_FAILURE,
0),
diff --git a/TAO/tao/POAManager.cpp b/TAO/tao/POAManager.cpp
index bc57280f7fe..f0930d1bbed 100644
--- a/TAO/tao/POAManager.cpp
+++ b/TAO/tao/POAManager.cpp
@@ -15,12 +15,10 @@ TAO_POA_Manager::TAO_POA_Manager (TAO_Object_Adapter &object_adapter)
poa_collection_ (),
object_adapter_ (object_adapter)
{
- this->object_adapter_.poa_manager_set_.insert (this);
}
TAO_POA_Manager::~TAO_POA_Manager (void)
{
- this->object_adapter_.poa_manager_set_.remove (this);
}
void
diff --git a/TAO/tao/POA_CORBA.h b/TAO/tao/POA_CORBA.h
index 0eb5e560a69..ac34701f9b4 100644
--- a/TAO/tao/POA_CORBA.h
+++ b/TAO/tao/POA_CORBA.h
@@ -31,6 +31,8 @@
#define TAO_IDL_POA_CORBA_H
#include "ace/pre.h"
+#include "tao/corbafwd.h"
+
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
diff --git a/TAO/tao/Policy_Manager.h b/TAO/tao/Policy_Manager.h
index 003e27c67db..be2dca34435 100644
--- a/TAO/tao/Policy_Manager.h
+++ b/TAO/tao/Policy_Manager.h
@@ -212,12 +212,16 @@ public:
const CORBA::PolicyTypeSeq & ts,
CORBA::Environment &ACE_TRY_ENV =
CORBA::Environment::default_environment ()
- );
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
virtual void set_policy_overrides (const CORBA::PolicyList & policies,
CORBA::SetOverrideType set_add,
CORBA::Environment &ACE_TRY_ENV =
CORBA::Environment::default_environment ()
- );
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ CORBA_InvalidPolicies));
#if (TAO_HAS_RELATIVE_ROUNDTRIP_TIMEOUT_POLICY == 1)
@@ -345,13 +349,17 @@ public:
const CORBA::PolicyTypeSeq & ts,
CORBA::Environment &ACE_TRY_ENV =
CORBA::Environment::default_environment ()
- );
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
virtual void set_policy_overrides (
const CORBA::PolicyList & policies,
CORBA::SetOverrideType set_add,
CORBA::Environment &ACE_TRY_ENV =
CORBA::Environment::default_environment ()
- );
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ CORBA_InvalidPolicies));
#if (TAO_HAS_RELATIVE_ROUNDTRIP_TIMEOUT_POLICY == 1)
diff --git a/TAO/tao/Policy_Manager.i b/TAO/tao/Policy_Manager.i
index 3aca120bd2c..137b575c388 100644
--- a/TAO/tao/Policy_Manager.i
+++ b/TAO/tao/Policy_Manager.i
@@ -60,6 +60,9 @@ ACE_INLINE CORBA::PolicyList *
TAO_Policy_Manager::get_policy_overrides (
const CORBA::PolicyTypeSeq & ts,
CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
{
ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon, this->mutex_, 0);
return this->impl_.get_policy_overrides (ts, ACE_TRY_ENV);
@@ -70,6 +73,10 @@ TAO_Policy_Manager::set_policy_overrides (
const CORBA::PolicyList & policies,
CORBA::SetOverrideType set_add,
CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ CORBA_InvalidPolicies
+ ))
{
ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, this->mutex_);
this->impl_.set_policy_overrides (policies, set_add, ACE_TRY_ENV);
@@ -259,6 +266,8 @@ ACE_INLINE CORBA::PolicyList *
TAO_Policy_Current::get_policy_overrides (
const CORBA::PolicyTypeSeq & ts,
CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+
{
TAO_Policy_Current_Impl &impl = this->implementation ();
@@ -269,6 +278,8 @@ ACE_INLINE void
TAO_Policy_Current::set_policy_overrides (const CORBA::PolicyList & policies,
CORBA::SetOverrideType set_add,
CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ CORBA_InvalidPolicies))
{
TAO_Policy_Current_Impl &impl = this->implementation ();
diff --git a/TAO/tao/PortableServerC.cpp b/TAO/tao/PortableServerC.cpp
index a01a944bbc1..bdb2870e230 100644
--- a/TAO/tao/PortableServerC.cpp
+++ b/TAO/tao/PortableServerC.cpp
@@ -1064,7 +1064,27 @@ PortableServer::POAManager::_duplicate (POAManager_ptr obj)
return obj;
}
-#if (TAO_HAS_MINIMUM_POA == 0)
+void *PortableServer::POAManager::_tao_QueryInterface (ptr_arith_t type)
+{
+ void *retv = 0;
+ if (type == ACE_reinterpret_cast
+ (ptr_arith_t,
+ &ACE_NESTED_CLASS (::PortableServer, POAManager)::_narrow))
+ retv = ACE_reinterpret_cast (void*, this);
+ else if (type == ACE_reinterpret_cast (ptr_arith_t, &CORBA::Object::_narrow))
+ retv = ACE_reinterpret_cast (void *,
+ ACE_static_cast (CORBA::Object_ptr, this));
+
+ if (retv)
+ this->_add_ref ();
+ return retv;
+}
+
+
+const char* PortableServer::POAManager::_interface_repository_id (void) const
+{
+ return "IDL:PortableServer/POAManager:1.0";
+}
// default constructor
PortableServer::POAManager::AdapterInactive::AdapterInactive (void)
@@ -1076,6 +1096,29 @@ PortableServer::POAManager::AdapterInactive::~AdapterInactive (void)
{
}
+void PortableServer::POAManager::AdapterInactive::_raise ()
+{
+ TAO_RAISE(*this);
+}
+
+
+void PortableServer::POAManager::AdapterInactive::_tao_encode (
+ TAO_OutputCDR &,
+ CORBA::Environment &ACE_TRY_ENV) const
+{
+ ACE_THROW (CORBA::MARSHAL ());
+}
+
+void PortableServer::POAManager::AdapterInactive::_tao_decode (
+ TAO_InputCDR &,
+ CORBA::Environment &ACE_TRY_ENV)
+{
+ ACE_THROW (CORBA::MARSHAL ());
+}
+
+
+#if (TAO_HAS_MINIMUM_POA == 0)
+
// copy constructor
PortableServer::POAManager::AdapterInactive::AdapterInactive (const ::PortableServer::POAManager::AdapterInactive &_tao_excp)
: CORBA_UserException (_tao_excp._type ())
@@ -1102,27 +1145,6 @@ PortableServer::POAManager::AdapterInactive::_downcast (CORBA::Exception *exc)
}
-void PortableServer::POAManager::AdapterInactive::_raise ()
-{
- TAO_RAISE(*this);
-}
-
-
-void PortableServer::POAManager::AdapterInactive::_tao_encode (
- TAO_OutputCDR &,
- CORBA::Environment &ACE_TRY_ENV) const
-{
- ACE_THROW (CORBA::MARSHAL ());
-}
-
-
-void PortableServer::POAManager::AdapterInactive::_tao_decode (
- TAO_InputCDR &,
- CORBA::Environment &ACE_TRY_ENV)
-{
- ACE_THROW (CORBA::MARSHAL ());
-}
-
// TAO extension - the _alloc method
CORBA::Exception *PortableServer::POAManager::AdapterInactive::_alloc (void)
{
@@ -1131,28 +1153,6 @@ CORBA::Exception *PortableServer::POAManager::AdapterInactive::_alloc (void)
return retval;
}
-void *PortableServer::POAManager::_tao_QueryInterface (ptr_arith_t type)
-{
- void *retv = 0;
- if (type == ACE_reinterpret_cast
- (ptr_arith_t,
- &ACE_NESTED_CLASS (::PortableServer, POAManager)::_narrow))
- retv = ACE_reinterpret_cast (void*, this);
- else if (type == ACE_reinterpret_cast (ptr_arith_t, &CORBA::Object::_narrow))
- retv = ACE_reinterpret_cast (void *,
- ACE_static_cast (CORBA::Object_ptr, this));
-
- if (retv)
- this->_add_ref ();
- return retv;
-}
-
-const char* PortableServer::POAManager::_interface_repository_id (void) const
-{
- return "IDL:PortableServer/POAManager:1.0";
-}
-
-
// default constructor
PortableServer::AdapterActivator::AdapterActivator (void)
{}
diff --git a/TAO/tao/RT_Policy_i.cpp b/TAO/tao/RT_Policy_i.cpp
index c74021e59f1..eca70415e49 100644
--- a/TAO/tao/RT_Policy_i.cpp
+++ b/TAO/tao/RT_Policy_i.cpp
@@ -34,26 +34,28 @@ TAO_PriorityModelPolicy::~TAO_PriorityModelPolicy (void)
RTCORBA::PriorityModel
TAO_PriorityModelPolicy::priority_model (CORBA::Environment &)
- ACE_THROW_SPEC (())
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->priority_model_;
}
RTCORBA::Priority
TAO_PriorityModelPolicy::server_priority (CORBA::Environment &)
- ACE_THROW_SPEC (())
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
return this->server_priority_;
}
CORBA::PolicyType
TAO_PriorityModelPolicy::policy_type (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
return RTCORBA::PRIORITY_MODEL_POLICY_TYPE;
}
CORBA::Policy_ptr
TAO_PriorityModelPolicy::copy (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_PriorityModelPolicy* tmp;
ACE_NEW_THROW_EX (tmp,
@@ -66,6 +68,7 @@ TAO_PriorityModelPolicy::copy (CORBA::Environment &ACE_TRY_ENV)
}
void TAO_PriorityModelPolicy::destroy (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
}
@@ -130,12 +133,14 @@ TAO_ThreadpoolPolicy::threadpool (CORBA::Environment &)
CORBA::PolicyType
TAO_ThreadpoolPolicy::policy_type (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
return RTCORBA::THREADPOOL_POLICY_TYPE;
}
CORBA::Policy_ptr
TAO_ThreadpoolPolicy::copy (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_ThreadpoolPolicy* tmp;
ACE_NEW_THROW_EX (tmp,
@@ -148,6 +153,7 @@ TAO_ThreadpoolPolicy::copy (CORBA::Environment &ACE_TRY_ENV)
}
void TAO_ThreadpoolPolicy::destroy (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
}
@@ -170,12 +176,14 @@ TAO_PrivateConnectionPolicy::~TAO_PrivateConnectionPolicy (void)
CORBA::PolicyType
TAO_PrivateConnectionPolicy::policy_type (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
return RTCORBA::PRIVATE_CONNECTION_POLICY_TYPE;
}
CORBA::Policy_ptr
TAO_PrivateConnectionPolicy::copy (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_PrivateConnectionPolicy* tmp;
ACE_NEW_THROW_EX (tmp,
@@ -189,6 +197,7 @@ TAO_PrivateConnectionPolicy::copy (CORBA::Environment &ACE_TRY_ENV)
void
TAO_PrivateConnectionPolicy::destroy (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
}
@@ -229,12 +238,14 @@ TAO_PriorityBandedConnectionPolicy::priority_bands (CORBA::Environment &ACE_TRY_
CORBA::PolicyType
TAO_PriorityBandedConnectionPolicy::policy_type (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
return RTCORBA::PRIORITY_BANDED_CONNECTION_POLICY_TYPE;
}
CORBA::Policy_ptr
TAO_PriorityBandedConnectionPolicy::copy (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_PriorityBandedConnectionPolicy *tmp;
ACE_NEW_THROW_EX (tmp,
@@ -247,6 +258,7 @@ TAO_PriorityBandedConnectionPolicy::copy (CORBA::Environment &ACE_TRY_ENV)
}
void TAO_PriorityBandedConnectionPolicy::destroy (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
}
@@ -431,12 +443,14 @@ TAO_ServerProtocolPolicy::protocols (CORBA::Environment &ACE_TRY_ENV)
CORBA::PolicyType
TAO_ServerProtocolPolicy::policy_type (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
return RTCORBA::SERVER_PROTOCOL_POLICY_TYPE;
}
CORBA::Policy_ptr
TAO_ServerProtocolPolicy::copy (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_ServerProtocolPolicy* tmp;
ACE_NEW_THROW_EX (tmp,
@@ -450,6 +464,7 @@ TAO_ServerProtocolPolicy::copy (CORBA::Environment &ACE_TRY_ENV)
void
TAO_ServerProtocolPolicy::destroy (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
}
@@ -490,12 +505,14 @@ TAO_ClientProtocolPolicy::protocols (CORBA::Environment &ACE_TRY_ENV)
CORBA::PolicyType
TAO_ClientProtocolPolicy::policy_type (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
return RTCORBA::CLIENT_PROTOCOL_POLICY_TYPE;
}
CORBA::Policy_ptr
TAO_ClientProtocolPolicy::copy (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_ClientProtocolPolicy* tmp;
ACE_NEW_THROW_EX (tmp,
@@ -509,6 +526,7 @@ TAO_ClientProtocolPolicy::copy (CORBA::Environment &ACE_TRY_ENV)
void
TAO_ClientProtocolPolicy::destroy (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
}
diff --git a/TAO/tao/RT_Policy_i.h b/TAO/tao/RT_Policy_i.h
index 246953b37d8..d70e6e0ea0b 100644
--- a/TAO/tao/RT_Policy_i.h
+++ b/TAO/tao/RT_Policy_i.h
@@ -73,22 +73,25 @@ public:
virtual RTCORBA::PriorityModel priority_model (CORBA::Environment
&ACE_TRY_ENV =
TAO_default_environment ())
- ACE_THROW_SPEC (());
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual RTCORBA::Priority server_priority (CORBA::Environment
&ACE_TRY_ENV =
TAO_default_environment ())
- ACE_THROW_SPEC (());
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::PolicyType policy_type (CORBA::Environment
&ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Policy_ptr copy (CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual void destroy (CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Boolean _tao_encode (TAO_OutputCDR &out_cdr);
// This method writes a CDR representation of the object state.
@@ -142,13 +145,16 @@ public:
virtual CORBA::PolicyType policy_type (CORBA::Environment
&ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Policy_ptr copy (CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ());
-
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
virtual void destroy (CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
// = Override CORBA::LocalObject no-op methods to
// provide reference counting.
@@ -185,13 +191,16 @@ public:
virtual CORBA::PolicyType policy_type (CORBA::Environment
&ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Policy_ptr copy (CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual void destroy (CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
// = Override CORBA::LocalObject no-op methods to
// provide reference counting.
@@ -237,13 +246,16 @@ public:
virtual CORBA::PolicyType policy_type (CORBA::Environment
&ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Policy_ptr copy (CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual void destroy (CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Boolean _tao_encode (TAO_OutputCDR &out_cdr);
// This method writes a CDR representation of the current object.
@@ -296,13 +308,16 @@ public:
virtual CORBA::PolicyType policy_type (CORBA::Environment
&ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Policy_ptr copy (CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual void destroy (CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
// = Override CORBA::LocalObject no-op methods to
// provide reference counting.
@@ -348,13 +363,16 @@ public:
virtual CORBA::PolicyType policy_type (CORBA::Environment
&ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual CORBA::Policy_ptr copy (CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
virtual void destroy (CORBA::Environment &ACE_TRY_ENV =
- TAO_default_environment ());
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
// = CDR Encoder/Decoder.
diff --git a/TAO/tao/SHMIOP_Connect.cpp b/TAO/tao/SHMIOP_Connect.cpp
index 886c9dafb2f..2544f92e312 100644
--- a/TAO/tao/SHMIOP_Connect.cpp
+++ b/TAO/tao/SHMIOP_Connect.cpp
@@ -12,6 +12,7 @@
#include "tao/Messaging_Policy_i.h"
#include "tao/GIOP_Message_Acceptors.h"
#include "tao/GIOP_Message_Lite.h"
+#include "tao/Server_Strategy_Factory.h"
#if !defined (__ACE_INLINE__)
# include "tao/SHMIOP_Connect.i"
@@ -217,6 +218,15 @@ TAO_SHMIOP_Server_Connection_Handler::handle_close (ACE_HANDLE handle,
--this->refcount_;
if (this->refcount_ == 0)
{
+ // Remove the handle from the ORB Core's handle set so that it
+ // isn't included in the set that is passed to the reactor upon
+ // ORB destruction.
+ TAO_Server_Strategy_Factory *f =
+ this->orb_core_->server_factory ();
+
+ if (f->activate_server_connections () == 0)
+ (void) this->orb_core_->remove_handle (handle);
+
this->peer().remove ();
return TAO_SHMIOP_SVC_HANDLER::handle_close (handle, rm);
}
diff --git a/TAO/tao/SHMIOP_Transport.cpp b/TAO/tao/SHMIOP_Transport.cpp
index 0c8b8b41751..8c69a0568cb 100644
--- a/TAO/tao/SHMIOP_Transport.cpp
+++ b/TAO/tao/SHMIOP_Transport.cpp
@@ -5,6 +5,8 @@
#if defined (TAO_HAS_SHMIOP) && (TAO_HAS_SHMIOP != 0)
+ACE_RCSID (tao, SHMIOP_Transport, "$Id$")
+
#include "tao/SHMIOP_Connect.h"
#include "tao/SHMIOP_Profile.h"
#include "tao/Timeprobe.h"
diff --git a/TAO/tao/UIOP_Connect.cpp b/TAO/tao/UIOP_Connect.cpp
index 1a1a05d8912..68f2b4ac238 100644
--- a/TAO/tao/UIOP_Connect.cpp
+++ b/TAO/tao/UIOP_Connect.cpp
@@ -11,7 +11,7 @@
#include "tao/ORB.h"
#include "tao/CDR.h"
#include "tao/Timeprobe.h"
-
+#include "tao/Server_Strategy_Factory.h"
#include "tao/Messaging_Policy_i.h"
#if !defined (__ACE_INLINE__)
@@ -204,7 +204,18 @@ TAO_UIOP_Server_Connection_Handler::handle_close (ACE_HANDLE handle,
--this->refcount_;
if (this->refcount_ == 0)
- return TAO_UIOP_SVC_HANDLER::handle_close (handle, rm);
+ {
+ // Remove the handle from the ORB Core's handle set so that it
+ // isn't included in the set that is passed to the reactor upon
+ // ORB destruction.
+ TAO_Server_Strategy_Factory *f =
+ this->orb_core_->server_factory ();
+
+ if (f->activate_server_connections () == 0)
+ (void) this->orb_core_->remove_handle (handle);
+
+ return TAO_UIOP_SVC_HANDLER::handle_close (handle, rm);
+ }
return 0;
}
diff --git a/TAO/tao/UIOP_Transport.cpp b/TAO/tao/UIOP_Transport.cpp
index c2dab7b6fb4..ef0f7c2a558 100644
--- a/TAO/tao/UIOP_Transport.cpp
+++ b/TAO/tao/UIOP_Transport.cpp
@@ -6,6 +6,8 @@
#if TAO_HAS_UIOP == 1
+ACE_RCSID (tao, UIOP_Transport, "$Id$")
+
#include "tao/UIOP_Connect.h"
#include "tao/UIOP_Profile.h"
#include "tao/Timeprobe.h"
diff --git a/TAO/tao/Version.h b/TAO/tao/Version.h
index 56c585ac26a..edde25f9418 100644
--- a/TAO/tao/Version.h
+++ b/TAO/tao/Version.h
@@ -3,5 +3,5 @@
#define TAO_MAJOR_VERSION 1
#define TAO_MINOR_VERSION 1
-#define TAO_BETA_VERSION 5
-#define TAO_VERSION "1.1.5"
+#define TAO_BETA_VERSION 7
+#define TAO_VERSION "1.1.7"
diff --git a/TAO/tao/Wait_On_Leader_Follower.cpp b/TAO/tao/Wait_On_Leader_Follower.cpp
index f666bcc5bb4..2190ba52c76 100644
--- a/TAO/tao/Wait_On_Leader_Follower.cpp
+++ b/TAO/tao/Wait_On_Leader_Follower.cpp
@@ -191,9 +191,9 @@ TAO_Wait_On_Leader_Follower::wait (ACE_Time_Value *max_wait_time,
ACE_GUARD_RETURN (ACE_Reverse_Lock<ACE_SYNCH_MUTEX>, rev_mon,
leader_follower.reverse_lock (), -1);
- // @@ Do we need to do this?
// Become owner of the reactor.
- orb_core->reactor ()->owner (ACE_Thread::self ());
+ ACE_Reactor *reactor = orb_core->reactor ();
+ reactor->owner (ACE_Thread::self ());
// Run the reactor event loop.
@@ -205,7 +205,7 @@ TAO_Wait_On_Leader_Follower::wait (ACE_Time_Value *max_wait_time,
while (1)
{
// Run the event loop.
- result = orb_core->reactor ()->handle_events (max_wait_time);
+ result = reactor->handle_events (max_wait_time);
// If we got our reply, no need to run the event loop any
// further.
diff --git a/TAO/tao/corba.h b/TAO/tao/corba.h
index bd87b3430df..6e28b48cdf8 100644
--- a/TAO/tao/corba.h
+++ b/TAO/tao/corba.h
@@ -56,9 +56,9 @@
// TAO specific files, avoid them as much as possible.
#include "tao/Interceptor.h"
-#if (TAO_HAS_SMART_PROXES == 1)
+#if (TAO_HAS_SMART_PROXIES == 1)
#include "tao/Smart_Proxies.h"
-#endif /*TAO_HAS_SMART_PROXES == 1*/
+#endif /*TAO_HAS_SMART_PROXIES == 1*/
#include "tao/Stub.h"
#include "tao/params.h"
#include "tao/ORB_Core.h"