diff options
Diffstat (limited to 'TAO/tao/PortableServer/POAManager.cpp')
-rw-r--r-- | TAO/tao/PortableServer/POAManager.cpp | 31 |
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; } } |