#include <RequestProcessingStrategyDefaultServant.h>
Inheritance diagram for TAO::Portable_Server::RequestProcessingStrategyDefaultServant:
|
Definition at line 26 of file RequestProcessingStrategyDefaultServant.cpp.
00027 : default_servant_ (0) 00028 { 00029 } |
|
Implements TAO::Portable_Server::RequestProcessingStrategy. Definition at line 183 of file RequestProcessingStrategyDefaultServant.cpp. References TAO_Root_POA::unbind_using_user_id().
00187 { 00188 if (servant) 00189 { 00190 // ATTENTION: Trick locking here, see class header for details 00191 Non_Servant_Upcall non_servant_upcall (*this->poa_); 00192 ACE_UNUSED_ARG (non_servant_upcall); 00193 00194 servant->_remove_ref (); 00195 } 00196 00197 // This operation causes the association of the Object Id specified 00198 // by the oid parameter and its servant to be removed from the 00199 // Active Object Map. 00200 if (this->poa_->unbind_using_user_id (user_id) != 0) 00201 { 00202 throw ::CORBA::OBJ_ADAPTER (); 00203 } 00204 } |
|
Implements TAO::Portable_Server::RequestProcessingStrategy. Definition at line 207 of file RequestProcessingStrategyDefaultServant.cpp.
00209 { 00210 } |
|
Implements TAO::Portable_Server::RequestProcessingStrategy. Definition at line 51 of file RequestProcessingStrategyDefaultServant.cpp. References default_servant_, and PortableServer::Servant_var< T >::in().
00052 { 00053 // This operation returns the default servant associated with the 00054 // POA. 00055 return this->default_servant_.in (); 00056 } |
|
Implements TAO::Portable_Server::RequestProcessingStrategy. Definition at line 38 of file RequestProcessingStrategyDefaultServant.cpp.
00039 { 00040 throw PortableServer::POA::WrongPolicy (); 00041 } |
|
Implements TAO::Portable_Server::RequestProcessingStrategy. Definition at line 164 of file RequestProcessingStrategyDefaultServant.cpp. References default_servant_, and PortableServer::Servant_var< T >::in().
00166 { 00167 PortableServer::Servant servant = this->default_servant_.in (); 00168 00169 if (servant == 0) 00170 { 00171 /* 00172 * If using default servant request processing strategy but 00173 * no default servant is available, we will raise the 00174 * ObjectNotActive system exception. 00175 */ 00176 throw PortableServer::POA::ObjectNotActive (); 00177 } 00178 00179 return servant; 00180 } |
|
Implements TAO::Portable_Server::RequestProcessingStrategy. Definition at line 111 of file RequestProcessingStrategyDefaultServant.cpp. References default_servant_, TAO_Root_POA::find_servant(), and PortableServer::Servant_var< T >::in().
00118 { 00119 PortableServer::Servant servant = 0; 00120 00121 servant = this->poa_->find_servant (system_id, 00122 servant_upcall, 00123 poa_current_impl); 00124 00125 if (servant == 0) 00126 { 00127 // If the POA has the USE_DEFAULT_SERVANT policy, a default servant 00128 // has been associated with the POA so the POA will invoke the 00129 // appropriate method on that servant. If no servant has been 00130 // associated with the POA, the POA raises the OBJ_ADAPTER system 00131 // exception. 00132 PortableServer::Servant default_servant = this->default_servant_.in (); 00133 if (default_servant == 0) 00134 { 00135 throw ::CORBA::OBJ_ADAPTER ( 00136 CORBA::OMGVMCID | 3, 00137 CORBA::COMPLETED_NO); 00138 } 00139 else 00140 { 00141 // Success 00142 servant = default_servant; 00143 } 00144 } 00145 00146 return servant; 00147 } |
|
Implements TAO::Portable_Server::RequestProcessingStrategy. Definition at line 90 of file RequestProcessingStrategyDefaultServant.cpp. References default_servant_, PortableServer::Servant_var< T >::in(), TAO_Root_POA::servant_present(), TAO_DEFAULT_SERVANT, TAO_SERVANT_LOCATION, and TAO_SERVANT_NOT_FOUND.
00094 { 00095 TAO_SERVANT_LOCATION location = TAO_SERVANT_NOT_FOUND; 00096 00097 location = this->poa_->servant_present (system_id, servant); 00098 00099 if (location == TAO_SERVANT_NOT_FOUND) 00100 { 00101 if (this->default_servant_.in () != 0) 00102 { 00103 location = TAO_DEFAULT_SERVANT; 00104 } 00105 } 00106 00107 return location; 00108 } |
|
Implements TAO::Portable_Server::RequestProcessingStrategy. Definition at line 240 of file RequestProcessingStrategyDefaultServant.cpp.
00243 { 00244 } |
|
Implements TAO::Portable_Server::RequestProcessingStrategy. Definition at line 213 of file RequestProcessingStrategyDefaultServant.cpp. References default_servant_, TAO::Portable_Server::POA_Current_Impl::get_object_id(), PortableServer::Servant_var< T >::in(), TAO_TSS_Resources::instance(), TAO_TSS_Resources::poa_current_impl_, TAO::Portable_Server::POA_Current_Impl::servant(), and TAO_Root_POA::servant_to_user_id().
00216 { 00217 PortableServer::Servant default_servant = this->default_servant_.in (); 00218 00219 if (default_servant != 0 && 00220 default_servant == servant) 00221 { 00222 // If they are the same servant, then check if we are in an 00223 // upcall. 00224 TAO::Portable_Server::POA_Current_Impl *poa_current_impl = 00225 static_cast <TAO::Portable_Server::POA_Current_Impl *> 00226 (TAO_TSS_Resources::instance ()->poa_current_impl_); 00227 // If we are in an upcall on the default servant, return the 00228 // ObjectId associated with the current invocation. 00229 if (poa_current_impl != 0 && 00230 servant == poa_current_impl->servant ()) 00231 { 00232 return poa_current_impl->get_object_id (); 00233 } 00234 } 00235 00236 return this->poa_->servant_to_user_id (servant); 00237 } |
|
Implements TAO::Portable_Server::RequestProcessingStrategy. Definition at line 59 of file RequestProcessingStrategyDefaultServant.cpp. References default_servant_.
00062 { 00063 // This operation registers the specified servant with the POA as 00064 // the default servant. This servant will be used for all requests 00065 // for which no servant is found in the Active Object Map. 00066 this->default_servant_ = servant; 00067 00068 // The implementation of set_servant will invoke _add_ref at least 00069 // once on the Servant argument before returning. When the POA no 00070 // longer needs the Servant, it will invoke _remove_ref on it the 00071 // same number of times. 00072 if (servant != 0) 00073 { 00074 // A recursive thread lock without using a recursive thread 00075 // lock. Non_Servant_Upcall has a magic constructor and 00076 // destructor. We unlock the Object_Adapter lock for the 00077 // duration of the servant activator upcalls; reacquiring once 00078 // the upcalls complete. Even though we are releasing the lock, 00079 // other threads will not be able to make progress since 00080 // <Object_Adapter::non_servant_upcall_in_progress_> has been 00081 // set. 00082 Non_Servant_Upcall non_servant_upcall (*this->poa_); 00083 ACE_UNUSED_ARG (non_servant_upcall); 00084 00085 servant->_add_ref (); 00086 } 00087 } |
|
Implements TAO::Portable_Server::RequestProcessingStrategy. Definition at line 44 of file RequestProcessingStrategyDefaultServant.cpp. References PortableServer::ServantManager_ptr.
00046 { 00047 throw PortableServer::POA::WrongPolicy (); 00048 } |
|
Reimplemented from TAO::Portable_Server::RequestProcessingStrategy. Definition at line 32 of file RequestProcessingStrategyDefaultServant.cpp. References default_servant_.
00033 { 00034 this->default_servant_ = 0; 00035 } |
|
Implements TAO::Portable_Server::RequestProcessingStrategy. Definition at line 150 of file RequestProcessingStrategyDefaultServant.cpp. References default_servant_, TAO_Root_POA::find_servant(), and PortableServer::Servant_var< T >::in().
00152 { 00153 PortableServer::Servant servant = this->default_servant_.in (); 00154 00155 if (servant == 0) 00156 { 00157 servant = this->poa_->find_servant (system_id); 00158 } 00159 00160 return servant; 00161 } |
|
Implements TAO::Portable_Server::RequestProcessingStrategy. Definition at line 247 of file RequestProcessingStrategyDefaultServant.cpp.
00248 { 00249 return ::PortableServer::USE_DEFAULT_SERVANT; 00250 } |
|
Definition at line 98 of file RequestProcessingStrategyDefaultServant.h. Referenced by get_servant(), id_to_servant(), locate_servant(), servant_to_id(), set_servant(), strategy_cleanup(), and system_id_to_servant(). |