#include <POAManagerFactory.h>
Inheritance diagram for TAO_POAManager_Factory:
Public Member Functions | |
TAO_POAManager_Factory (TAO_Object_Adapter &object_adapter) | |
virtual | ~TAO_POAManager_Factory (void) |
virtual::PortableServer::POAManager_ptr | create_POAManager (const char *id, const::CORBA::PolicyList &policies) throw (CORBA::SystemException, ::PortableServer::POAManagerFactory::ManagerAlreadyExists, ::CORBA::PolicyError) |
virtual::PortableServer::POAManagerFactory::POAManagerSeq * | list () throw (CORBA::SystemException) |
virtual::PortableServer::POAManager_ptr | find (const char *id) throw (CORBA::SystemException) |
int | remove_poamanager (::PortableServer::POAManager_ptr poamanager) |
int | register_poamanager (::PortableServer::POAManager_ptr poamanager) |
Private Types | |
typedef ACE_Unbounded_Set< ::PortableServer::POAManager_ptr > | POAMANAGERSET |
Private Attributes | |
TAO_Object_Adapter & | object_adapter_ |
POAMANAGERSET | poamanager_set_ |
|
Definition at line 73 of file POAManagerFactory.h. |
|
Definition at line 17 of file POAManagerFactory.cpp.
00017 : 00018 object_adapter_ (object_adapter) 00019 { 00020 } |
|
Definition at line 22 of file POAManagerFactory.cpp. References ACE_Unbounded_Set< T >::begin(), ACE_Unbounded_Set< T >::end(), poamanager_set_, and CORBA::release().
00023 { 00024 for (POAMANAGERSET::iterator iterator = this->poamanager_set_.begin (); 00025 iterator != this->poamanager_set_.end (); 00026 ++iterator) 00027 { 00028 ::PortableServer::POAManager_ptr poamanager = (*iterator); 00029 CORBA::release (poamanager); 00030 } 00031 } |
|
Definition at line 34 of file POAManagerFactory.cpp. References ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, ACE_NEW_THROW_EX, ACE_THROW_RETURN, TAO_Objref_Var_T< T >::in(), CORBA::is_nil(), PortableServer::POAManager_ptr, and PortableServer::POAManager_var. Referenced by TAO_Object_Adapter::open().
00041 { 00042 if (policies.length () > 1 00043 || (policies.length () == 1 && 00044 policies[0]->policy_type () != EndpointPolicy::ENDPOINT_POLICY_TYPE)) 00045 { 00046 ACE_THROW_RETURN (CORBA::PolicyError (CORBA::BAD_POLICY), 00047 ::PortableServer::POAManager::_nil ()); 00048 } 00049 00050 PortableServer::POAManager_var poamanager = 00051 PortableServer::POAManager::_nil (); 00052 if (id != 0) 00053 { 00054 poamanager = this->find (id ACE_ENV_ARG_PARAMETER); 00055 ACE_CHECK_RETURN (::PortableServer::POAManager::_nil ()); 00056 00057 // If we already have a manager with the same name throw an exception 00058 if (!CORBA::is_nil (poamanager.in())) 00059 { 00060 ACE_THROW_RETURN ( 00061 ::PortableServer::POAManagerFactory::ManagerAlreadyExists (), 00062 ::PortableServer::POAManager::_nil ()); 00063 } 00064 } 00065 00066 // this indirection brought to you by borland's compiler and its refusal 00067 // to directly assign the newly created TAO_POA_Manager to a POAManager_var. 00068 { 00069 PortableServer::POAManager_ptr pm = 0; 00070 ACE_NEW_THROW_EX (pm, 00071 TAO_POA_Manager (object_adapter_, id, policies, this), 00072 CORBA::NO_MEMORY 00073 (CORBA::SystemException::_tao_minor_code (0, ENOMEM), 00074 CORBA::COMPLETED_NO)); 00075 ACE_CHECK_RETURN (::PortableServer::POAManager::_nil ()); 00076 poamanager = pm; 00077 } 00078 00079 this->register_poamanager (poamanager.in ()); 00080 00081 return PortableServer::POAManager::_duplicate (poamanager.in ()); 00082 } |
|
Definition at line 114 of file POAManagerFactory.cpp. References ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, and ACE_OS::strcmp().
00117 { 00118 ::PortableServer::POAManager_ptr poamanager = 00119 ::PortableServer::POAManager::_nil(); 00120 00121 for (POAMANAGERSET::iterator iterator = this->poamanager_set_.begin (); 00122 iterator != this->poamanager_set_.end (); 00123 ++iterator) 00124 { 00125 CORBA::String_var poamanagerid = 00126 (*iterator)->get_id (ACE_ENV_SINGLE_ARG_PARAMETER); 00127 ACE_CHECK_RETURN (::PortableServer::POAManager::_nil()); 00128 00129 if (ACE_OS::strcmp (id, poamanagerid.in()) == 0) 00130 { 00131 poamanager = PortableServer::POAManager::_duplicate (*iterator); 00132 break; 00133 } 00134 } 00135 00136 return poamanager; 00137 } |
|
Implements PortableServer::POAManagerFactory. Definition at line 85 of file POAManagerFactory.cpp. References ACE_CHECK_RETURN, ACE_NEW_THROW_EX, and PortableServer::POAManagerFactory::POAManagerSeq.
00088 { 00089 ::PortableServer::POAManagerFactory::POAManagerSeq_var poamanagers; 00090 CORBA::ULong number_of_poamanagers = static_cast <CORBA::ULong> 00091 (this->poamanager_set_.size ()); 00092 ACE_NEW_THROW_EX (poamanagers, 00093 PortableServer::POAManagerFactory::POAManagerSeq ( 00094 number_of_poamanagers), 00095 CORBA::NO_MEMORY ()); 00096 ACE_CHECK_RETURN (0); 00097 00098 poamanagers->length (number_of_poamanagers); 00099 00100 CORBA::ULong index = 0; 00101 for (POAMANAGERSET::iterator iterator = this->poamanager_set_.begin (); 00102 iterator != this->poamanager_set_.end (); 00103 ++iterator, ++index) 00104 { 00105 ::PortableServer::POAManager_ptr poamanager = (*iterator); 00106 poamanagers[index] = 00107 PortableServer::POAManager::_duplicate (poamanager); 00108 } 00109 00110 return poamanagers._retn (); 00111 } |
|
Definition at line 155 of file POAManagerFactory.cpp. References ACE_Unbounded_Set< T >::insert(), PortableServer::POAManager_ptr, and poamanager_set_.
00157 { 00158 return this->poamanager_set_.insert ( 00159 PortableServer::POAManager::_duplicate (poamanager)); 00160 } |
|
Definition at line 140 of file POAManagerFactory.cpp. References PortableServer::POAManager_ptr, poamanager_set_, CORBA::release(), and ACE_Unbounded_Set< T >::remove(). Referenced by TAO_POA_Manager::remove_poa().
00142 { 00143 int retval = 0; 00144 retval = this->poamanager_set_.remove (poamanager); 00145 00146 if (retval == 0) 00147 { 00148 CORBA::release (poamanager); 00149 } 00150 00151 return retval; 00152 } |
|
Definition at line 71 of file POAManagerFactory.h. |
|
Definition at line 75 of file POAManagerFactory.h. Referenced by register_poamanager(), remove_poamanager(), and ~TAO_POAManager_Factory(). |