summaryrefslogtreecommitdiff
path: root/TAO/tao/PortableServer/POAManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/PortableServer/POAManager.cpp')
-rw-r--r--TAO/tao/PortableServer/POAManager.cpp31
1 files changed, 24 insertions, 7 deletions
diff --git a/TAO/tao/PortableServer/POAManager.cpp b/TAO/tao/PortableServer/POAManager.cpp
index 3c484a85c23..66a9c9eba95 100644
--- a/TAO/tao/PortableServer/POAManager.cpp
+++ b/TAO/tao/PortableServer/POAManager.cpp
@@ -3,9 +3,11 @@
#include "POAManager.h"
#include "POA.h"
#include "poa_macros.h"
+#include "tao/IORInterceptor/IORInterceptorC.h"
#include "tao/Server_Strategy_Factory.h"
+#include "tao/Interceptor_List.h"
#include "tao/ORB_Core.h"
-#include "tao/IORInterceptor_Adapter.h"
+#include "tao/IORInterceptor/IORInterceptor_List.h"
#if !defined (__ACE_INLINE__)
# include "POAManager.i"
@@ -138,14 +140,29 @@ TAO_POA_Manager::adapter_manager_state_changed (PortableServer::POAManager::Stat
{
PortableInterceptor::AdapterState adapter_state = state;
- TAO_IORInterceptor_Adapter *ior_adapter =
- this->object_adapter_.orb_core ().ior_interceptor_adapter ();
+ /// Whenever the POAManager state is changed, the
+ /// adapter_manager_state_changed method is to be invoked on all the IOR
+ /// Interceptors.
+ TAO_IORInterceptor_List *interceptor_list =
+ this->object_adapter_.orb_core ().ior_interceptor_list ();
- if (ior_adapter)
+ 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)
{
- ior_adapter->adapter_manager_state_changed (TAO_POA_Manager::poa_manager_id_,
- adapter_state
- ACE_ENV_ARG_PARAMETER);
+ interceptors[i]->adapter_manager_state_changed (
+ TAO_POA_Manager::poa_manager_id_,
+ adapter_state
+ ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
}
}