summaryrefslogtreecommitdiff
path: root/TAO/tao/PortableServer/POA.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/PortableServer/POA.cpp')
-rw-r--r--TAO/tao/PortableServer/POA.cpp107
1 files changed, 59 insertions, 48 deletions
diff --git a/TAO/tao/PortableServer/POA.cpp b/TAO/tao/PortableServer/POA.cpp
index 8b6ec3a65df..590bfcfd7e8 100644
--- a/TAO/tao/PortableServer/POA.cpp
+++ b/TAO/tao/PortableServer/POA.cpp
@@ -731,7 +731,7 @@ TAO_POA::destroy_i (CORBA::Boolean etherealize_objects,
}
}
- TAO_ObjectReferenceTemplate_Array array_obj_ref_template;
+ TAO::ObjectReferenceTemplate_Array array_obj_ref_template;
CORBA::ULong i = 0;
@@ -750,10 +750,16 @@ TAO_POA::destroy_i (CORBA::Boolean etherealize_objects,
// will be destroyed.
array_obj_ref_template.size (i + 1);
+
+
array_obj_ref_template[i] = child_at;
child_poa->adapter_state_ = PortableInterceptor::INACTIVE;
+ // @@ Johnny, this looks cranky to me. Why would anyone
+ // call adapter_state_changed over and over again. Shouldn't
+ // this be outside the loop? I know this looks busted in the
+ // main trunk too. Grr..
child_poa->adapter_state_changed (array_obj_ref_template,
child_poa->adapter_state_
ACE_ENV_ARG_PARAMETER);
@@ -4063,54 +4069,58 @@ TAO_ObjectReferenceTemplate_Adapter_Factory *
TAO_POA::object_reference_template_adapter_factory (void)
{
return ACE_Dynamic_Service<TAO_ObjectReferenceTemplate_Adapter_Factory>::instance (
- TAO_POA::objectreferencetemplate_adapter_factory_name());
+ TAO_POA::ort_adapter_factory_name ());
}
-TAO_ObjectReferenceTemplate_Adapter *
+TAO::ObjectReferenceTemplate_Adapter *
TAO_POA::object_reference_template_adapter (void)
{
- if (this->ort_adapter_ == 0)
- {
- // Lock access for the duration of this transaction.
- TAO_POA_GUARD_RETURN (0);
+ if (this->ort_adapter_ != 0)
+ return this->ort_adapter_;
- if (this->ort_adapter_ == 0)
- {
- ACE_DECLARE_NEW_CORBA_ENV;
- ACE_TRY
- {
- TAO_ObjectReferenceTemplate_Adapter_Factory * ort_ap_factory =
- this->object_reference_template_adapter_factory();
+ {
+ // Lock access for the duration of this transaction.
+ TAO_POA_GUARD_RETURN (0);
- if (ort_ap_factory)
- {
- this->ort_adapter_ =
- ort_ap_factory->create (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- if (ort_adapter_)
- {
- // Get the full adapter name of this POA
- PortableInterceptor::AdapterName *adapter_name =
- this->adapter_name_i(ACE_ENV_SINGLE_ARG_PARAMETER)
- ACE_TRY_CHECK;
-
- ort_adapter_->activate (this->orb_core_.server_id (),
- this->orb_core_.orbid (),
- adapter_name,
- this);
- }
- }
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
- "(%P|%t) Cannot initialize the "
- "object_reference_template_adapter\n");
- }
- ACE_ENDTRY;
- }
- }
+ // DCL ..
+ if (this->ort_adapter_ != 0)
+ return this->ort_adapter_;
+
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ TAO_ObjectReferenceTemplate_Adapter_Factory * ort_ap_factory =
+ this->object_reference_template_adapter_factory();
+
+ if (!ort_ap_factory)
+ return 0;
+
+ this->ort_adapter_ =
+ ort_ap_factory->create (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (!ort_adapter_)
+ return 0;
+
+ // Get the full adapter name of this POA
+ PortableInterceptor::AdapterName *adapter_name =
+ this->adapter_name_i (ACE_ENV_SINGLE_ARG_PARAMETER)
+ ACE_TRY_CHECK;
+
+ this->ort_adapter_->activate (this->orb_core_.server_id (),
+ this->orb_core_.orbid (),
+ adapter_name,
+ this);
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "(%P|%t) Cannot initialize the "
+ "object_reference_template_adapter\n");
+ }
+ ACE_ENDTRY;
+ ACE_CHECK_RETURN (0);
+ }
return this->ort_adapter_;
}
@@ -4251,15 +4261,16 @@ TAO_POA::Key_To_Object_Params::set (PortableServer::ObjectId_var &system_id,
}
void
-TAO_POA::objectreferencetemplate_adapter_factory_name (const char *name)
+TAO_POA::ort_adapter_factory_name (const char *name)
{
- TAO_POA_Static_Resources::instance ()->objectreferencetemplate_adapter_factory_name_ = name;
+ TAO_POA_Static_Resources::instance ()->ort_adapter_factory_name_ =
+ name;
}
const char *
-TAO_POA::objectreferencetemplate_adapter_factory_name (void)
+TAO_POA::ort_adapter_factory_name (void)
{
- return TAO_POA_Static_Resources::instance ()->objectreferencetemplate_adapter_factory_name_.c_str();
+ return TAO_POA_Static_Resources::instance ()->ort_adapter_factory_name_.c_str();
}
// Initialize instance_ to 0, since this is what we test for in the call
@@ -4292,7 +4303,7 @@ TAO_POA_Static_Resources::instance (void)
}
TAO_POA_Static_Resources::TAO_POA_Static_Resources (void)
- : objectreferencetemplate_adapter_factory_name_ ("ObjectReferenceTemplate_Adapter_Factory")
+ : ort_adapter_factory_name_ ("ObjectReferenceTemplate_Adapter_Factory")
{
}