#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(). |
1.3.6