summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2004-08-17 14:32:12 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2004-08-17 14:32:12 +0000
commit7f8b259bb70ce890303208e31c47469c3c1e8c8c (patch)
tree8d5acdfd4558dbd9e1fc2f57cd82df892b63b1f5
parent003ec088ca038c86024fe556cea063bc3467aa12 (diff)
downloadATCD-7f8b259bb70ce890303208e31c47469c3c1e8c8c.tar.gz
ChangeLogTag: Tue Aug 17 14:30:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
-rw-r--r--TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Factory_Impl.cpp55
-rw-r--r--TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Factory_Impl.h72
-rw-r--r--TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Impl.cpp131
-rw-r--r--TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Impl.h147
-rw-r--r--TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Impl.inl9
-rw-r--r--TAO/tao/PortableServer/IORInfo.cpp4
-rw-r--r--TAO/tao/PortableServer/ORTRework.txt18
-rwxr-xr-xTAO/tao/PortableServer/ObjectReferenceTemplate_Adapter.h1
-rw-r--r--TAO/tao/PortableServer/POA.cpp35
-rw-r--r--TAO/tao/PortableServer/POA.h22
10 files changed, 461 insertions, 33 deletions
diff --git a/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Factory_Impl.cpp b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Factory_Impl.cpp
new file mode 100644
index 00000000000..5f49f89435d
--- /dev/null
+++ b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Factory_Impl.cpp
@@ -0,0 +1,55 @@
+// $Id$
+
+#include "ObjectReferenceTemplate_Adapter_Factory_Impl.h"
+#include "ObjectReferenceTemplate_Adapter_Impl.h"
+#include "tao/PortableServer/POA.h"
+
+ACE_RCSID (ORT,
+ ObjectReferenceTemplate_Adapter_Factory_Impl,
+ "$Id$")
+
+TAO_ObjectReferenceTemplate_Adapter_Factory_Impl::~TAO_ObjectReferenceTemplate_Adapter_Factory_Impl (void)
+{
+}
+
+TAO_ObjectReferenceTemplate_Adapter *
+TAO_ObjectReferenceTemplate_Adapter_Factory_Impl::create (
+ ACE_ENV_SINGLE_ARG_DECL_NOT_USED
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ TAO_ObjectReferenceTemplate_Adapter_Impl * new_objectreferencetemplate_adapter;
+ ACE_NEW_RETURN (new_objectreferencetemplate_adapter,
+ TAO_ObjectReferenceTemplate_Adapter_Impl,
+ 0);
+ return new_objectreferencetemplate_adapter;
+}
+
+
+// *********************************************************************
+
+// Initialization and registration of dynamic service object.
+
+int
+TAO_ObjectReferenceTemplate_Adapter_Factory_Impl::Initializer (void)
+{
+ TAO_POA::objectreferencetemplate_adapter_factory_name (
+ "Concrete_ObjectReferenceTemplate_Adapter_Factory"
+ );
+
+ return
+ ACE_Service_Config::process_directive (
+ ace_svc_desc_TAO_ObjectReferenceTemplate_Adapter_Factory_Impl
+ );
+}
+
+ACE_STATIC_SVC_DEFINE (
+ TAO_ObjectReferenceTemplate_Adapter_Factory_Impl,
+ ACE_TEXT ("Concrete_ObjectReferenceTemplate_Adapter_Factory"),
+ ACE_SVC_OBJ_T,
+ &ACE_SVC_NAME (TAO_ObjectReferenceTemplate_Adapter_Factory_Impl),
+ ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ,
+ 0
+ )
+
+ACE_FACTORY_DEFINE (TAO_ORT, TAO_ObjectReferenceTemplate_Adapter_Factory_Impl)
diff --git a/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Factory_Impl.h b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Factory_Impl.h
new file mode 100644
index 00000000000..536e48ea46e
--- /dev/null
+++ b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Factory_Impl.h
@@ -0,0 +1,72 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file ObjectReferenceTemplate_Adapter_Factory.h
+ *
+ * $Id$
+ *
+ * @author Johnny Willemsen <jwillemsen@remedy.nl>
+ */
+//=============================================================================
+
+
+#ifndef TAO_OBJECTREFERENCETEMPLATE_ADAPTER_FACTORY_IMPL_H
+#define TAO_OBJECTREFERENCETEMPLATE_ADAPTER_FACTORY_IMPL_H
+
+#include /**/ "ace/pre.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ort_export.h"
+#include "tao/PortableServer/ObjectReferenceTemplate_Adapter_Factory.h"
+#include "ace/Service_Config.h"
+
+/**
+ * @class TAO_ObjectReferenceTemplate_Adapter_Factory_Impl
+ *
+ * @brief TAO_ObjectReferenceTemplate_Adapter_Factory_Impl
+ *
+ * Class that creates instances of TAO_ObjectReferenceTemplate_Adapter
+ * (one per POA). This is the derived class that contains the actual
+ * implementation.
+ */
+class TAO_ORT_Export TAO_ObjectReferenceTemplate_Adapter_Factory_Impl
+ : public TAO_ObjectReferenceTemplate_Adapter_Factory
+{
+public:
+ virtual ~TAO_ObjectReferenceTemplate_Adapter_Factory_Impl (void);
+
+ virtual TAO_ObjectReferenceTemplate_Adapter * create (
+ ACE_ENV_SINGLE_ARG_DECL
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Used to force the initialization of the code.
+ static int Initializer (void);
+};
+
+ACE_STATIC_SVC_DECLARE (TAO_ObjectReferenceTemplate_Adapter_Factory_Impl)
+ACE_FACTORY_DECLARE (TAO_ORT, TAO_ObjectReferenceTemplate_Adapter_Factory_Impl)
+
+#if defined (ACE_HAS_BROKEN_STATIC_CONSTRUCTORS)
+
+typedef int (*TAO_Module_Initializer) (void);
+
+static TAO_Module_Initializer
+TAO_Requires_ORTFactory_Initializer =
+ &TAO_ObjectReferenceTemplate_Adapter_Factory_Impl::Initializer;
+
+#else
+
+static int
+TAO_Requires_ORTFactory_Initializer =
+ TAO_ObjectReferenceTemplate_Adapter_Factory_Impl::Initializer ();
+
+#endif /* ACE_HAS_BROKEN_STATIC_CONSTRUCTORS */
+
+#include /**/ "ace/post.h"
+
+#endif /* TAO_OBJECTREFERENCETEMPLATE_ADAPTER_FACTORY_IMPL_H */
diff --git a/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Impl.cpp b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Impl.cpp
new file mode 100644
index 00000000000..94ead2c1570
--- /dev/null
+++ b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Impl.cpp
@@ -0,0 +1,131 @@
+// $Id$
+
+#include "tao/PortableServer/POA.h"
+
+#include "tao/CORBA_String.h"
+#include "tao/ORB_Constants.h"
+
+
+ACE_RCSID (ORT,
+ ObjectReferenceTemplate_Adapater_Impl,
+ "$Id$")
+
+
+#if !defined (__ACE_INLINE__)
+# include "ObjectReferenceTemplate_Adapter_Impl.h"
+#endif /* ! __ACE_INLINE__ */
+
+
+TAO_ObjectReferenceTemplate_Adapter_Impl::TAO_ObjectReferenceTemplate_Adapter_Impl()
+{}
+
+TAO_ObjectReferenceTemplate_Adapter_Impl::TAO_ObjectReferenceTemplate_Adapter_Impl (
+ const char *server_id,
+ const char *orb_id,
+ PortableInterceptor::AdapterName *adapter_name,
+ TAO_POA * poa)
+ : server_id_ (server_id),
+ orb_id_ (orb_id),
+ poa_ (poa)
+{
+}
+
+TAO_ObjectReferenceTemplate_Adapter_Impl::~TAO_ObjectReferenceTemplate_Adapter_Impl (void)
+{
+}
+
+char *
+TAO_ObjectReferenceTemplate_Adapter_Impl::server_id (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->server_id_);
+}
+
+char *
+TAO_ObjectReferenceTemplate_Adapter_Impl::orb_id (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->orb_id_);
+}
+
+PortableInterceptor::AdapterName *
+TAO_ObjectReferenceTemplate_Adapter_Impl::adapter_name (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ PortableInterceptor::AdapterName *adapter_name;
+ ACE_NEW_THROW_EX (adapter_name,
+ PortableInterceptor::AdapterName (
+ *(this->adapter_name_)),
+ CORBA::NO_MEMORY (
+ CORBA::SystemException::_tao_minor_code (
+ TAO_DEFAULT_MINOR_CODE,
+ ENOMEM),
+ CORBA::COMPLETED_NO));
+ ACE_CHECK_RETURN (0);
+
+ return adapter_name;
+}
+
+CORBA::Object_ptr
+TAO_ObjectReferenceTemplate_Adapter_Impl::make_object (
+ const char *,
+ const PortableInterceptor::ObjectId &
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ if (this->poa_ == 0)
+ ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (), CORBA::Object::_nil ());
+
+ return this->poa_->invoke_key_to_object (ACE_ENV_SINGLE_ARG_PARAMETER);
+}
+
+int
+TAO_ObjectReferenceTemplate_Adapter_Impl::destroy (void)
+{
+// delete this;
+ return 0;
+}
+
+PortableInterceptor::ObjectReferenceTemplate *
+TAO_ObjectReferenceTemplate_Adapter_Impl::get_adapter_template (void)
+{
+ this->_add_ref();
+ return this;
+}
+
+PortableInterceptor::ObjectReferenceFactory *
+TAO_ObjectReferenceTemplate_Adapter_Impl::get_obj_ref_factory (void)
+{
+ this->_add_ref();
+ return this;
+}
+
+int
+TAO_ObjectReferenceTemplate_Adapter_Impl::activate (PortableInterceptor::ObjectReferenceFactory *current_factory,
+ TAO_POA *poa)
+{
+ poa_ = poa;
+ return 0;
+}
+
+int
+TAO_ObjectReferenceTemplate_Adapter_Impl::activate (const char *server_id,
+ const char *orb_id,
+ PortableInterceptor::AdapterName *adapter_name,
+ TAO_POA *poa)
+{
+ server_id_ = server_id;
+ orb_id_ = orb_id;
+ adapter_name_ = adapter_name;
+ poa_ = poa;
+
+ return 0;
+}
+
+void
+TAO_ObjectReferenceTemplate_Adapter_Impl::poa (TAO_POA * poa)
+{
+ poa_ = poa;
+}
diff --git a/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Impl.h b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Impl.h
new file mode 100644
index 00000000000..77846aa8f8e
--- /dev/null
+++ b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Impl.h
@@ -0,0 +1,147 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file ObjectReferenceTemplate_Adapter_Impl.h
+ *
+ * $Id$
+ *
+ * This is the implementation of the
+ * PortableInterceptor::ObjectReferenceTemplate ValueType.
+ *
+ * @author Priyanka Gontla <gontla_p@ociweb.com>
+ */
+//=============================================================================
+
+#ifndef TAO_OBJECT_REFERENCE_TEMPLATE_I_H
+#define TAO_OBJECT_REFERENCE_TEMPLATE_I_H
+
+#include /**/ "ace/pre.h"
+
+#include "ort_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/PortableServer/ObjectReferenceTemplate_Adapter.h"
+#include "Default_ORTC.h"
+
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1200)
+#pragma warning(push)
+#endif /* _MSC_VER >= 1200 */
+#pragma warning(disable:4250)
+#endif /* _MSC_VER */
+
+class TAO_POA;
+
+/**
+ * @class TAO_ObjectReferenceTemplate_Adapter
+ *
+ * @brief Implementation of the PortableInterceptor::ObjectReferenceTemplate
+ * interface.
+ */
+class TAO_ORT_Export TAO_ObjectReferenceTemplate_Adapter_Impl
+ : public TAO_ObjectReferenceTemplate_Adapter,
+ public virtual OBV_TAO_Default_ORT::ObjectReferenceTemplate,
+ public virtual CORBA::DefaultValueRefCountBase
+{
+public:
+ TAO_ObjectReferenceTemplate_Adapter_Impl();
+
+ /// Constructor
+ virtual int activate (const char *server_id,
+ const char *orb_id,
+ PortableInterceptor::AdapterName *adapter_name,
+ TAO_POA *poa);
+
+ TAO_ObjectReferenceTemplate_Adapter_Impl (const char *server_id,
+ const char *orb_id,
+ PortableInterceptor::AdapterName *,
+ TAO_POA *poa);
+
+ virtual int destroy (void);
+
+ virtual int activate (PortableInterceptor::ObjectReferenceFactory *current_factory,
+ TAO_POA *poa);
+
+ /**
+ * @name PortableInterceptor::ObjectReferenceTemplate Methods
+ *
+ * Methods required by the
+ * PortableInterceptor::ObjectReferenceTemplate ValueType.
+ */
+ //@{
+ virtual char * server_id (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual char * orb_id (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual PortableInterceptor::AdapterName * adapter_name (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ //@}
+
+ /// Accessor methods to ObjectReferenceTemplate template
+ virtual PortableInterceptor::ObjectReferenceTemplate * get_adapter_template (void);
+
+ /// Accessor methods to PortableInterceptor::ObjectReferenceFactory
+ virtual PortableInterceptor::ObjectReferenceFactory * get_obj_ref_factory (void);
+
+ /**
+ * @name PortableInterceptor::ObjectReferenceFactory Methods
+ *
+ * Methods required by the
+ * PortableInterceptor::ObjectReferenceFactory ValueType.
+ */
+ //@{
+ virtual CORBA::Object_ptr make_object (
+ const char * repository_id,
+ const PortableInterceptor::ObjectId & id
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+ //@}
+
+ /// Set the underlying POA pointer.
+ /**
+ * Upon destruction of the POA that this ObjectReferenceTemplate is
+ * associated with, the underlying POA pointer will be set to zero
+ * to forcibly break all ties with the POA. This is necessary to
+ * prevent this ObjectReferenceTemplate from invoking the POA after
+ * it has been destroyed.
+ */
+ void poa (TAO_POA * poa);
+
+protected:
+
+ /// Destructor
+ /**
+ * Protected destructor to enforce proper memory management via
+ * reference counting.
+ */
+ ~TAO_ObjectReferenceTemplate_Adapter_Impl (void);
+
+private:
+
+ const char *server_id_;
+ const char *orb_id_;
+ PortableInterceptor::AdapterName_var adapter_name_;
+ TAO_POA *poa_;
+
+};
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+#pragma warning(pop)
+#endif /* _MSC_VER */
+
+#if defined (__ACE_INLINE__)
+# include "ObjectReferenceTemplate_Adapter_Impl.inl"
+#endif /* ! __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+
+#endif /* TAO_OBJECT_REFERENCE_TEMPLATE_I_H */
diff --git a/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Impl.inl b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Impl.inl
new file mode 100644
index 00000000000..14de581cafc
--- /dev/null
+++ b/TAO/tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Impl.inl
@@ -0,0 +1,9 @@
+// -*- C++ -*-
+//
+// $Id$
+
+ACE_INLINE void
+TAO_ObjectReferenceTemplate::poa (TAO_POA * poa)
+{
+ this->poa_ = poa;
+}
diff --git a/TAO/tao/PortableServer/IORInfo.cpp b/TAO/tao/PortableServer/IORInfo.cpp
index df689cc906b..4047aa792ce 100644
--- a/TAO/tao/PortableServer/IORInfo.cpp
+++ b/TAO/tao/PortableServer/IORInfo.cpp
@@ -147,7 +147,7 @@ TAO_IORInfo::adapter_template (ACE_ENV_SINGLE_ARG_DECL)
0);
}
- CORBA::add_ref (adapter_template);
+ //CORBA::add_ref (adapter_template);
return adapter_template;
}
@@ -174,7 +174,7 @@ TAO_IORInfo::current_factory (ACE_ENV_SINGLE_ARG_DECL)
0);
}
- CORBA::add_ref (adapter_factory);
+ //CORBA::add_ref (adapter_factory);
return adapter_factory;
}
diff --git a/TAO/tao/PortableServer/ORTRework.txt b/TAO/tao/PortableServer/ORTRework.txt
index 3bb23baf8fe..3d838aa0297 100644
--- a/TAO/tao/PortableServer/ORTRework.txt
+++ b/TAO/tao/PortableServer/ORTRework.txt
@@ -1,3 +1,21 @@
+Tue Aug 17 14:30:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ Checkin of rework until now, not happy with the interfaces yet, now
+ the test app seems to work a little, I am going to review all
+ changed interfaces again and improve things.
+
+ * tao/POA.{h,cpp}:
+ - Changed adapter_state_changed to use IORInterceptor_List
+ functionality to call adapter_state_changed on all IORInterceptors
+ - Changed access of some methods
+ * tao/IORInfo.cpp:
+ Commented out some add_refs on the ORT, this should be done in the
+ ORT Adapter. Need to check this
+
+ * tao/ObjRefTemplate/ObjectReferenceTemplate_Adapter_Factory.{h,cpp}:
+ * tao/ObjRefTemplate/ObjectReferenceTemplate_Impl.{h,cpp,inl}:
+ New files with first implementation
+
Tue Aug 17 13:59:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
* tao/IORInterceptor/IORInterceptor_List/{h,cpp}:
diff --git a/TAO/tao/PortableServer/ObjectReferenceTemplate_Adapter.h b/TAO/tao/PortableServer/ObjectReferenceTemplate_Adapter.h
index 16e525d3a6c..dda8c24f0bb 100755
--- a/TAO/tao/PortableServer/ObjectReferenceTemplate_Adapter.h
+++ b/TAO/tao/PortableServer/ObjectReferenceTemplate_Adapter.h
@@ -36,6 +36,7 @@ namespace PortableInterceptor
{
class ObjectReferenceTemplate;
class ObjectReferenceFactory;
+
}
/**
diff --git a/TAO/tao/PortableServer/POA.cpp b/TAO/tao/PortableServer/POA.cpp
index 447ec0a70c4..8fac6414dc6 100644
--- a/TAO/tao/PortableServer/POA.cpp
+++ b/TAO/tao/PortableServer/POA.cpp
@@ -743,7 +743,7 @@ TAO_POA::destroy_i (CORBA::Boolean etherealize_objects,
}
}
- PortableInterceptor::ObjectReferenceTemplateSeq seq_obj_ref_template;
+ TAO_ObjectReferenceTemplate_Array array_obj_ref_template;
CORBA::ULong i = 0;
@@ -758,17 +758,17 @@ TAO_POA::destroy_i (CORBA::Boolean etherealize_objects,
PortableInterceptor::ObjectReferenceTemplate *child_at =
child_poa->get_adapter_template ();
- CORBA::add_ref (child_at);
+ //CORBA::add_ref (child_at);
// Add it to the sequence of object reference templates that
// will be destroyed.
- seq_obj_ref_template.length (i + 1);
+ array_obj_ref_template.size (i + 1);
- seq_obj_ref_template[i] = child_at;
+ array_obj_ref_template[i] = child_at;
child_poa->adapter_state_ = PortableInterceptor::INACTIVE;
- child_poa->adapter_state_changed (seq_obj_ref_template,
+ child_poa->adapter_state_changed (array_obj_ref_template,
child_poa->adapter_state_
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
@@ -850,14 +850,14 @@ TAO_POA::destroy_i (CORBA::Boolean etherealize_objects,
this->adapter_state_ = PortableInterceptor::NON_EXISTENT;
- this->adapter_state_changed (seq_obj_ref_template,
+ this->adapter_state_changed (array_obj_ref_template,
this->adapter_state_
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
// Break all ties between the ObjectReferenceTemplate and this
// POA.
- if (this->ort_adapter_ == 0)
+ if (this->ort_adapter_ != 0)
this->ort_adapter_->poa (0);
}
else
@@ -1030,7 +1030,7 @@ TAO_POA::add_ior_component_to_profile (
void
TAO_POA::adapter_state_changed (
- const PortableInterceptor::ObjectReferenceTemplateSeq &seq_obj_ref_template,
+ const TAO_ObjectReferenceTemplate_Array &array_obj_ref_template,
PortableInterceptor::AdapterState state
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
@@ -1042,21 +1042,10 @@ TAO_POA::adapter_state_changed (
if (interceptor_list == 0)
return;
- TAO_IORInterceptor_List::TYPE & interceptors =
- interceptor_list->interceptors ();
-
- const size_t interceptor_count = interceptors.size ();
-
- if (interceptor_count == 0)
- return;
-
- for (size_t i = 0; i < interceptor_count; ++i)
- {
- interceptors[i]->adapter_state_changed (seq_obj_ref_template,
- state
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
- }
+ interceptor_list->adapter_state_changed (array_obj_ref_template,
+ state
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
}
#if (TAO_HAS_MINIMUM_POA == 0)
diff --git a/TAO/tao/PortableServer/POA.h b/TAO/tao/PortableServer/POA.h
index 122667e3b37..89c893ff58e 100644
--- a/TAO/tao/PortableServer/POA.h
+++ b/TAO/tao/PortableServer/POA.h
@@ -134,6 +134,10 @@ class TAO_Acceptor_Registry;
class TAO_ObjectReferenceTemplate_Adapter;
class TAO_ObjectReferenceTemplate_Adapter_Factory;
+typedef
+ACE_Array_Base<PortableInterceptor::ObjectReferenceTemplate*> TAO_ObjectReferenceTemplate_Array;
+
+
namespace PortableInterceptor
{
class IORInfo;
@@ -159,7 +163,7 @@ public:
friend class TAO_POA_Current_Impl;
friend class TAO_POA_Manager;
friend class TAO_RT_Collocation_Resolver;
- //friend class TAO_ObjectReferenceTemplate;
+ friend class TAO_ObjectReferenceTemplate_Adapter_Factory;
typedef ACE_CString String;
@@ -550,6 +554,10 @@ public:
CORBA::Boolean waiting_destruction (void) const;
+ static void objectreferencetemplate_adapter_factory_name (const char *name);
+
+ static const char *objectreferencetemplate_adapter_factory_name (void);
+
protected:
/// Template method for creating new POA's of this type.
@@ -606,10 +614,9 @@ protected:
/// Method to notify the IOR Interceptors when there is a state
/// changed not related to POAManager.
void adapter_state_changed (
- const PortableInterceptor::ObjectReferenceTemplateSeq &seq_obj_ref_template,
+ const TAO_ObjectReferenceTemplate_Array &array_obj_ref_template,
PortableInterceptor::AdapterState state
- ACE_ENV_ARG_DECL
- )
+ ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
/// Add the given tagged component to all profiles.
@@ -663,8 +670,11 @@ protected:
//@}
#endif /* TAO_HAS_MINIMUM_CORBA */
+// @johnny hacke
+public:
CORBA::Object_ptr invoke_key_to_object (ACE_ENV_SINGLE_ARG_DECL);
+protected:
/// Wrapper for the ORB's key_to_object that will alter the object pointer
/// if the ImplRepo is used.
CORBA::Object_ptr key_to_object (const TAO::ObjectKey &key,
@@ -850,10 +860,6 @@ protected:
/// prototype for creating new POA's. It should
static TAO_POA_Policy_Set &default_poa_policies (void);
- static void objectreferencetemplate_adapter_factory_name (const char *name);
-
- static const char *objectreferencetemplate_adapter_factory_name (void);
-
protected:
TAO_SERVANT_LOCATION locate_servant_i (const PortableServer::ObjectId &id,