#include <Object_Adapter.h>
Inheritance diagram for TAO_Object_Adapter:
This class will be used as a facade for the POAs in a server
Definition at line 73 of file Object_Adapter.h.
Id hash map.
Definition at line 374 of file Object_Adapter.h. Referenced by TAO_Object_Adapter(). |
|
Id linear map.
Definition at line 381 of file Object_Adapter.h. Referenced by TAO_Object_Adapter(). |
|
Base class of the name map.
Definition at line 366 of file Object_Adapter.h. Referenced by TAO_Object_Adapter(). |
|
Definition at line 80 of file Object_Adapter.h. Referenced by activate_poa(), bind_persistent_poa(), TAO_Object_Adapter::No_Hint_Strategy::bind_persistent_poa(), TAO_Object_Adapter::Active_Hint_Strategy::bind_persistent_poa(), bind_poa(), bind_transient_poa(), find_persistent_poa(), TAO_Object_Adapter::No_Hint_Strategy::find_persistent_poa(), TAO_Object_Adapter::Active_Hint_Strategy::find_persistent_poa(), find_poa(), find_transient_poa(), TAO_Root_POA::is_poa_generated(), TAO_Object_Adapter::iteratable_poa_name::iteratable_poa_name(), locate_poa(), TAO_Root_POA::parse_ir_object_key(), TAO_Root_POA::parse_key(), unbind_persistent_poa(), TAO_Object_Adapter::No_Hint_Strategy::unbind_persistent_poa(), TAO_Object_Adapter::Active_Hint_Strategy::unbind_persistent_poa(), unbind_poa(), and unbind_transient_poa(). |
|
Definition at line 82 of file Object_Adapter.h. Referenced by bind_persistent_poa(), TAO_Object_Adapter::No_Hint_Strategy::bind_persistent_poa(), TAO_Object_Adapter::Active_Hint_Strategy::bind_persistent_poa(), bind_poa(), and bind_transient_poa(). |
|
Definition at line 81 of file Object_Adapter.h. |
|
Id active map.
Definition at line 361 of file Object_Adapter.h. Referenced by TAO_Object_Adapter(). |
|
Id hash map.
Definition at line 346 of file Object_Adapter.h. Referenced by TAO_Object_Adapter(). |
|
Id linear map.
Definition at line 354 of file Object_Adapter.h. Referenced by TAO_Object_Adapter(). |
|
Base class of the id map.
Definition at line 337 of file Object_Adapter.h. Referenced by TAO_Object_Adapter(). |
|
Constructor.
Definition at line 143 of file Object_Adapter.cpp. References ACE_ERROR, ACE_NEW, hint_strategy_, LM_ERROR, persistent_poa_name_hash_map, persistent_poa_name_linear_map, persistent_poa_name_map, persistent_poa_name_map_, TAO_Server_Strategy_Factory::Active_Object_Map_Creation_Parameters::poa_lookup_strategy_for_persistent_id_policy_, TAO_Server_Strategy_Factory::Active_Object_Map_Creation_Parameters::poa_lookup_strategy_for_transient_id_policy_, TAO_Server_Strategy_Factory::Active_Object_Map_Creation_Parameters::poa_map_size_, ACE_Auto_Basic_Ptr< X >::release(), set_transient_poa_name_size(), TAO_ACTIVE_DEMUX, TAO_DYNAMIC_HASH, TAO_LINEAR, transient_poa_active_map, transient_poa_hash_map, transient_poa_linear_map, transient_poa_map, transient_poa_map_, and TAO_Server_Strategy_Factory::Active_Object_Map_Creation_Parameters::use_active_hint_in_poa_names_.
00145 : hint_strategy_ (0), 00146 servant_dispatcher_ (0), 00147 persistent_poa_name_map_ (0), 00148 transient_poa_map_ (0), 00149 orb_core_ (orb_core), 00150 enable_locking_ (orb_core_.server_factory ()->enable_poa_locking ()), 00151 thread_lock_ (), 00152 lock_ (TAO_Object_Adapter::create_lock (enable_locking_, 00153 thread_lock_)), 00154 reverse_lock_ (*lock_), 00155 non_servant_upcall_condition_ (thread_lock_), 00156 non_servant_upcall_in_progress_ (0), 00157 non_servant_upcall_nesting_level_ (0), 00158 non_servant_upcall_thread_ (ACE_OS::NULL_thread), 00159 root_ (0), 00160 default_validator_ (orb_core), 00161 default_poa_policies_ () 00162 { 00163 TAO_Object_Adapter::set_transient_poa_name_size (creation_parameters); 00164 00165 Hint_Strategy *hint_strategy = 0; 00166 if (creation_parameters.use_active_hint_in_poa_names_) 00167 ACE_NEW (hint_strategy, 00168 Active_Hint_Strategy (creation_parameters.poa_map_size_)); 00169 else 00170 ACE_NEW (hint_strategy, 00171 No_Hint_Strategy); 00172 00173 // Give ownership to the auto pointer. 00174 auto_ptr<Hint_Strategy> new_hint_strategy (hint_strategy); 00175 00176 new_hint_strategy->object_adapter (this); 00177 00178 persistent_poa_name_map *ppnm = 0; 00179 switch (creation_parameters.poa_lookup_strategy_for_persistent_id_policy_) 00180 { 00181 case TAO_LINEAR: 00182 #if (TAO_HAS_MINIMUM_POA_MAPS == 0) 00183 ACE_NEW (ppnm, 00184 persistent_poa_name_linear_map (creation_parameters.poa_map_size_)); 00185 00186 break; 00187 #else 00188 ACE_ERROR ((LM_ERROR, 00189 "linear option for -ORBPersistentidPolicyDemuxStrategy " 00190 "not supported with minimum POA maps. " 00191 "Ingoring option to use default... \n")); 00192 /* FALL THROUGH */ 00193 #endif /* TAO_HAS_MINIMUM_POA_MAPS == 0 */ 00194 case TAO_DYNAMIC_HASH: 00195 default: 00196 ACE_NEW (ppnm, 00197 persistent_poa_name_hash_map (creation_parameters.poa_map_size_)); 00198 break; 00199 } 00200 // Give ownership to the auto pointer. 00201 auto_ptr<persistent_poa_name_map> new_persistent_poa_name_map (ppnm); 00202 00203 transient_poa_map *tpm = 0; 00204 switch (creation_parameters.poa_lookup_strategy_for_transient_id_policy_) 00205 { 00206 #if (TAO_HAS_MINIMUM_POA_MAPS == 0) 00207 case TAO_LINEAR: 00208 ACE_NEW (tpm, 00209 transient_poa_linear_map (creation_parameters.poa_map_size_)); 00210 break; 00211 case TAO_DYNAMIC_HASH: 00212 ACE_NEW (tpm, 00213 transient_poa_hash_map (creation_parameters.poa_map_size_)); 00214 break; 00215 #else 00216 case TAO_LINEAR: 00217 case TAO_DYNAMIC_HASH: 00218 ACE_ERROR ((LM_ERROR, 00219 "linear and dynamic options for -ORBTransientidPolicyDemuxStrategy " 00220 "are not supported with minimum POA maps. " 00221 "Ingoring option to use default... \n")); 00222 /* FALL THROUGH */ 00223 #endif /* TAO_HAS_MINIMUM_POA_MAPS == 0 */ 00224 case TAO_ACTIVE_DEMUX: 00225 default: 00226 ACE_NEW (tpm, 00227 transient_poa_active_map (creation_parameters.poa_map_size_)); 00228 break; 00229 } 00230 // Give ownership to the auto pointer. 00231 auto_ptr<transient_poa_map> new_transient_poa_map (tpm); 00232 00233 this->hint_strategy_ = 00234 new_hint_strategy.release (); 00235 this->persistent_poa_name_map_ = 00236 new_persistent_poa_name_map.release (); 00237 this->transient_poa_map_ = 00238 new_transient_poa_map.release (); 00239 } |
|
Destructor.
Definition at line 299 of file Object_Adapter.cpp. References hint_strategy_, persistent_poa_name_map_, servant_dispatcher_, and transient_poa_map_.
00300 { 00301 delete this->hint_strategy_; 00302 delete this->persistent_poa_name_map_; 00303 delete this->transient_poa_map_; 00304 delete this->lock_; 00305 00306 delete this->servant_dispatcher_; 00307 } |
|
Definition at line 432 of file Object_Adapter.cpp. References ACE_CATCH, ACE_CHECK_RETURN, ACE_ENDTRY, ACE_ENV_ARG_NOT_USED, ACE_ENV_ARG_PARAMETER, ACE_THROW_RETURN, ACE_TRY, ACE_TRY_CHECK, TAO_Object_Adapter::iteratable_poa_name::begin(), TAO_Object_Adapter::iteratable_poa_name::end(), TAO_Root_POA::find_POA_i(), TAO_Root_POA::name(), and poa_name. Referenced by TAO_Object_Adapter::No_Hint_Strategy::find_persistent_poa(), and TAO_Object_Adapter::Active_Hint_Strategy::find_persistent_poa().
00435 { 00436 int result = -1; 00437 00438 #if (TAO_HAS_MINIMUM_POA == 0) && !defined (CORBA_E_MICRO) 00439 00440 iteratable_poa_name ipn (folded_name); 00441 iteratable_poa_name::iterator iterator = ipn.begin (); 00442 iteratable_poa_name::iterator end = ipn.end (); 00443 00444 TAO_Root_POA *parent = this->root_; 00445 if (parent == 0 || parent->name () != *iterator) 00446 ACE_THROW_RETURN (CORBA::OBJ_ADAPTER (), 00447 -1); 00448 else 00449 ++iterator; 00450 00451 for (; 00452 iterator != end; 00453 ++iterator) 00454 { 00455 TAO_Root_POA *current = 0; 00456 00457 ACE_TRY 00458 { 00459 current = parent->find_POA_i (*iterator, 00460 1 00461 ACE_ENV_ARG_PARAMETER); 00462 ACE_TRY_CHECK; 00463 } 00464 ACE_CATCH (PortableServer::POA::AdapterNonExistent, ex) 00465 { 00466 return -1; 00467 } 00468 ACE_ENDTRY; 00469 ACE_CHECK_RETURN (-1); 00470 00471 parent = current; 00472 } 00473 00474 poa = parent; 00475 result = 0; 00476 #else 00477 ACE_UNUSED_ARG (folded_name); 00478 ACE_UNUSED_ARG (poa); 00479 ACE_ENV_ARG_NOT_USED; // FUZZ: ignore check_for_ace_check 00480 #endif /* TAO_HAS_MINIMUM_POA == 0 */ 00481 00482 return result; 00483 } |
|
Definition at line 129 of file Object_Adapter.i. References TAO_Object_Adapter::Hint_Strategy::bind_persistent_poa(), hint_strategy_, poa_name, and poa_name_out. Referenced by bind_poa().
00132 { 00133 return this->hint_strategy_->bind_persistent_poa (folded_name, 00134 poa, 00135 system_name); 00136 } |
|
Definition at line 512 of file Object_Adapter.cpp. References bind_persistent_poa(), bind_transient_poa(), TAO_Root_POA::persistent(), poa_name, and poa_name_out. Referenced by TAO_Root_POA::TAO_Root_POA().
00515 { 00516 if (poa->persistent ()) 00517 return this->bind_persistent_poa (folded_name, 00518 poa, 00519 system_name); 00520 else 00521 return this->bind_transient_poa (poa, 00522 system_name); 00523 } |
|
Definition at line 111 of file Object_Adapter.i. References ACE_NEW_RETURN, ACE_Map< poa_name, TAO_Root_POA * >::bind_create_key(), poa_name, poa_name_out, and transient_poa_map_. Referenced by bind_poa().
00113 { 00114 poa_name name; 00115 int result = this->transient_poa_map_->bind_create_key (poa, 00116 name); 00117 00118 if (result == 0) 00119 { 00120 ACE_NEW_RETURN (system_name, 00121 poa_name (name), 00122 -1); 00123 } 00124 00125 return result; 00126 } |
|
Implements TAO_Adapter. Definition at line 742 of file Object_Adapter.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, and TAO_Root_POA::check_for_valid_wait_for_completions(). Referenced by close().
00744 { 00745 TAO_Root_POA::check_for_valid_wait_for_completions (this->orb_core (), 00746 wait_for_completion 00747 ACE_ENV_ARG_PARAMETER); 00748 ACE_CHECK; 00749 } |
|
Implements TAO_Adapter. Definition at line 703 of file Object_Adapter.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_GUARD, check_close(), TAO_Root_POA::destroy(), and poa_manager_factory_.
00705 { 00706 this->check_close (wait_for_completion ACE_ENV_ARG_PARAMETER); 00707 ACE_CHECK; 00708 00709 // Shutting down the ORB causes all object adapters to be destroyed, 00710 // since they cannot exist in the absence of an ORB. Shut down is 00711 // complete when all ORB processing (including request processing 00712 // and object deactivation or other operations associated with 00713 // object adapters) has completed and the object adapters have been 00714 // destroyed. In the case of the POA, this means that all object 00715 // etherealizations have finished and root POA has been destroyed 00716 // (implying that all descendent POAs have also been destroyed). 00717 TAO_Root_POA *root = 0; 00718 TAO_POAManager_Factory* factory = 0; 00719 { 00720 ACE_GUARD (ACE_Lock, ace_mon, this->lock ()); 00721 if (this->root_ == 0) 00722 return; 00723 root = this->root_; 00724 this->root_ = 0; 00725 if (this->poa_manager_factory_ == 0) 00726 return; 00727 factory = this->poa_manager_factory_; 00728 this->poa_manager_factory_ = 0; 00729 } 00730 CORBA::Boolean etherealize_objects = 1; 00731 root->destroy (etherealize_objects, 00732 wait_for_completion 00733 ACE_ENV_ARG_PARAMETER); 00734 ACE_CHECK; 00735 ::CORBA::release (root); 00736 #if !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO) 00737 ::CORBA::release (factory); 00738 #endif 00739 } |
|
Implements TAO_Adapter. Definition at line 914 of file Object_Adapter.cpp. References ACE_NEW_RETURN, get_collocated_servant(), and TAO_Stub::servant_orb().
00916 { 00917 TAO_ServantBase *sb = this->get_collocated_servant (mp); 00918 00919 // Set the servant ORB. Do not duplicate the ORB here since 00920 // TAO_Stub::servant_orb() duplicates it. 00921 stub->servant_orb (this->orb_core_.orb ()); 00922 00923 // It is ok to create a collocated object even when <sb> is 00924 // zero. This constructor will set the stub collocated indicator and 00925 // the strategized proxy broker if required. 00926 CORBA::Object_ptr x; 00927 ACE_NEW_RETURN (x, 00928 CORBA::Object (stub, 00929 1, 00930 sb), 00931 CORBA::Object::_nil ()); 00932 00933 // Success. 00934 return x; 00935 } |
|
Definition at line 311 of file Object_Adapter.cpp. References ACE_NEW_RETURN.
00313 { 00314 #if defined (ACE_HAS_THREADS) 00315 if (enable_locking) 00316 { 00317 ACE_Lock *the_lock = 0; 00318 ACE_NEW_RETURN (the_lock, 00319 ACE_Lock_Adapter<TAO_SYNCH_MUTEX> (thread_lock), 00320 0); 00321 return the_lock; 00322 } 00323 #else 00324 ACE_UNUSED_ARG (enable_locking); 00325 ACE_UNUSED_ARG (thread_lock); 00326 #endif /* ACE_HAS_THREADS */ 00327 00328 ACE_Lock *the_lock = 0; 00329 ACE_NEW_RETURN (the_lock, 00330 ACE_Lock_Adapter<ACE_SYNCH_NULL_MUTEX> (), 00331 0); 00332 return the_lock; 00333 } |
|
Return the set of default policies.
Definition at line 22 of file Object_Adapter.i. References default_poa_policies_.
00023 { 00024 return this->default_poa_policies_; 00025 } |
|
Implements TAO_Adapter. Definition at line 758 of file Object_Adapter.cpp. References ACE_ANY_EXCEPTION, ACE_CATCHANY, ACE_CHECK_RETURN, ACE_ENDTRY, ACE_ENV_ARG_PARAMETER, ACE_RE_THROW, ACE_TRY, ACE_TRY_CHECK, TAO_ServerRequest::caught_exception(), dispatch_servant(), TAO_ServerRequest::forward_location(), TAO::unbounded_value_sequence< T >::get_buffer(), CORBA::is_nil(), ACE_OS::memcmp(), TAO::ServerRequestInterceptor_Adapter::receive_request_service_contexts(), TAO_ServerRequest::reply_status(), TAO_ServerRequest::send_cached_reply(), TAO::ServerRequestInterceptor_Adapter::send_exception(), TAO::ServerRequestInterceptor_Adapter::send_other(), and TAO_ORB_Core::serverrequestinterceptor_adapter().
00762 { 00763 if (ACE_OS::memcmp (key.get_buffer (), 00764 &TAO_Root_POA::objectkey_prefix[0], 00765 TAO_Root_POA::TAO_OBJECTKEY_PREFIX_SIZE) != 0) 00766 { 00767 return TAO_Adapter::DS_MISMATCHED_KEY; 00768 } 00769 00770 int result = 0; 00771 00772 #if TAO_HAS_INTERCEPTORS == 1 00773 TAO::ServerRequestInterceptor_Adapter *sri_adapter = 00774 orb_core_.serverrequestinterceptor_adapter (); 00775 00776 ACE_TRY 00777 { 00778 if (sri_adapter != 0) 00779 { 00780 #if TAO_HAS_EXTENDED_FT_INTERCEPTORS == 1 00781 CORBA::OctetSeq_var ocs; 00782 sri_adapter->tao_ft_interception_point (request, 00783 0, // args 00784 0, // nargs 00785 0, // servant_upcall 00786 0, // exceptions 00787 0, // nexceptions 00788 ocs.out () 00789 ACE_ENV_ARG_PARAMETER); 00790 ACE_TRY_CHECK; 00791 00792 /// If we have a cached result, just go ahead and send the reply 00793 /// and let us return 00794 if (ocs.ptr () != 0) 00795 { 00796 // request.result_seq ( 00797 request.send_cached_reply (ocs.inout ()); 00798 00799 return TAO_Adapter::DS_OK; 00800 } 00801 00802 // If a PortableInterceptor::ForwardRequest exception was 00803 // thrown, then set the forward_to object reference and return 00804 // with the appropriate return status. 00805 forward_to.ptr () = request.forward_location (); 00806 if (!CORBA::is_nil (request.forward_location ())) 00807 { 00808 return TAO_Adapter::DS_FORWARD; 00809 } 00810 #endif /*TAO_HAS_EXTENDED_FT_INTERCEPTORS*/ 00811 00812 // The receive_request_service_contexts() interception point 00813 // must be invoked before the operation is dispatched to the 00814 // servant. 00815 sri_adapter->receive_request_service_contexts (request, 00816 0, // args 00817 0, // nargs 00818 0, // servant_upcall 00819 0, // exceptions 00820 0 // nexceptions 00821 ACE_ENV_ARG_PARAMETER); 00822 ACE_TRY_CHECK; 00823 00824 // If a PortableInterceptor::ForwardRequest exception was 00825 // thrown, then set the forward_to object reference and return 00826 // with the appropriate return status. 00827 forward_to.ptr () = request.forward_location (); 00828 if (!CORBA::is_nil (request.forward_location ())) 00829 { 00830 return TAO_Adapter::DS_FORWARD; 00831 } 00832 } 00833 #endif /* TAO_HAS_INTERCEPTORS == 1 */ 00834 00835 result = this->dispatch_servant (key, 00836 request, 00837 forward_to 00838 ACE_ENV_ARG_PARAMETER); 00839 00840 #if TAO_HAS_INTERCEPTORS == 1 00841 ACE_TRY_CHECK; 00842 00843 if (result == TAO_Adapter::DS_FORWARD) 00844 { 00845 request.forward_location (forward_to.ptr ()); 00846 if (sri_adapter != 0) 00847 { 00848 sri_adapter->send_other (request, 00849 0, // args 00850 0, // nargs 00851 0, // servant_upcall 00852 0, // exceptions 00853 0 // nexceptions 00854 ACE_ENV_ARG_PARAMETER); 00855 ACE_TRY_CHECK; 00856 } 00857 } 00858 } 00859 ACE_CATCHANY 00860 { 00861 // Just assume the current exception is a system exception, the 00862 // status can only change when the interceptor changes this 00863 // and this is only done when the sri_adapter is available. If we 00864 // don't have an sri_adapter we just rethrow the exception 00865 PortableInterceptor::ReplyStatus status = 00866 PortableInterceptor::SYSTEM_EXCEPTION; 00867 00868 if (sri_adapter != 0) 00869 { 00870 request.caught_exception (&ACE_ANY_EXCEPTION); 00871 00872 sri_adapter->send_exception (request, 00873 0, // args 00874 0, // nargs 00875 0, // servant_upcall 00876 0, // exceptions 00877 0 // nexceptions 00878 ACE_ENV_ARG_PARAMETER); 00879 ACE_TRY_CHECK; 00880 00881 status = 00882 request.reply_status (); 00883 } 00884 00885 // Only re-throw the exception if it hasn't been transformed by 00886 // the send_exception() interception point (e.g. to a 00887 // LOCATION_FORWARD). 00888 if (status == PortableInterceptor::SYSTEM_EXCEPTION 00889 || status == PortableInterceptor::USER_EXCEPTION) 00890 { 00891 ACE_RE_THROW; 00892 } 00893 } 00894 ACE_ENDTRY; 00895 ACE_CHECK_RETURN (result); 00896 #endif /* TAO_HAS_INTERCEPTORS == 1 */ 00897 00898 return result; 00899 } |
|
Definition at line 336 of file Object_Adapter.cpp. References ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_FUNCTION_TIMEPROBE, TAO_ServerRequest::collocated(), do_dispatch(), TAO_ServerRequest::operation(), TAO::Portable_Server::Servant_Upcall::pre_invoke_collocated_request(), TAO::Portable_Server::Servant_Upcall::pre_invoke_remote_request(), and TAO::Portable_Server::Servant_Upcall::prepare_for_upcall(). Referenced by dispatch().
00340 { 00341 ACE_FUNCTION_TIMEPROBE (TAO_OBJECT_ADAPTER_DISPATCH_SERVANT_START); 00342 00343 // This object is magical, i.e., it has a non-trivial constructor 00344 // and destructor. 00345 TAO::Portable_Server::Servant_Upcall servant_upcall (&this->orb_core_); 00346 00347 // Set up state in the POA et al (including the POA Current), so 00348 // that we know that this servant is currently in an upcall. 00349 const char *operation = req.operation (); 00350 int result = 00351 servant_upcall.prepare_for_upcall (key, 00352 operation, 00353 forward_to 00354 ACE_ENV_ARG_PARAMETER); 00355 ACE_CHECK_RETURN (result); 00356 00357 if (result != TAO_Adapter::DS_OK) 00358 return result; 00359 00360 // Preprocess request. 00361 if (req.collocated ()) 00362 { 00363 servant_upcall.pre_invoke_collocated_request ( 00364 ACE_ENV_SINGLE_ARG_PARAMETER); 00365 ACE_CHECK_RETURN (result); 00366 } 00367 else 00368 { 00369 servant_upcall.pre_invoke_remote_request (req 00370 ACE_ENV_ARG_PARAMETER); 00371 ACE_CHECK_RETURN (result); 00372 } 00373 00374 // Servant dispatch. 00375 { 00376 ACE_FUNCTION_TIMEPROBE (TAO_SERVANT_DISPATCH_START); 00377 00378 do_dispatch (req, servant_upcall ACE_ENV_ARG_PARAMETER); 00379 ACE_CHECK_RETURN (result); 00380 } 00381 00382 return result; 00383 } |
|
|
|
Definition at line 1282 of file Object_Adapter.cpp. References ACE_CHECK, and ACE_ENV_ARG_PARAMETER. Referenced by dispatch_servant().
|
|
Definition at line 16 of file Object_Adapter.i. References enable_locking_. Referenced by TAO::Portable_Server::ServantRetentionStrategyRetain::is_servant_in_map(), and TAO::Portable_Server::ServantRetentionStrategyRetain::is_user_id_in_map().
00017 { 00018 return this->enable_locking_; 00019 } |
|
Definition at line 77 of file Object_Adapter.i. References ACE_ENV_ARG_PARAMETER, TAO_Object_Adapter::Hint_Strategy::find_persistent_poa(), hint_strategy_, and poa_name. Referenced by find_poa().
00080 { 00081 return this->hint_strategy_->find_persistent_poa (system_name, 00082 poa 00083 ACE_ENV_ARG_PARAMETER); 00084 } |
|
Definition at line 87 of file Object_Adapter.i. References ACE_ENV_ARG_PARAMETER, find_persistent_poa(), find_transient_poa(), and poa_name. Referenced by locate_poa().
00093 { 00094 if (activate_it) 00095 { 00096 return this->find_persistent_poa (system_name, 00097 poa 00098 ACE_ENV_ARG_PARAMETER); 00099 } 00100 else 00101 { 00102 return this->find_transient_poa (system_name, 00103 root, 00104 poa_creation_time, 00105 poa 00106 ACE_ENV_ARG_PARAMETER); 00107 } 00108 } |
|
Definition at line 64 of file Object_Adapter.i. References ACE_ENV_ARG_PARAMETER, find_servant_i(), TAO_OBJECT_ADAPTER_GUARD_RETURN, and TAO_SERVANT_NOT_FOUND. Referenced by get_collocated_servant().
00067 { 00068 // Lock access for the duration of this transaction. 00069 TAO_OBJECT_ADAPTER_GUARD_RETURN (TAO_SERVANT_NOT_FOUND); 00070 00071 return this->find_servant_i (key, 00072 servant 00073 ACE_ENV_ARG_PARAMETER); 00074 } |
|
Definition at line 575 of file Object_Adapter.cpp. References ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, locate_poa(), TAO_Root_POA::locate_servant_i(), TAO_SERVANT_LOCATION, and TAO_SERVANT_NOT_FOUND. Referenced by find_servant().
00578 { 00579 PortableServer::ObjectId id; 00580 TAO_Root_POA *poa = 0; 00581 00582 this->locate_poa (key, 00583 id, 00584 poa 00585 ACE_ENV_ARG_PARAMETER); 00586 ACE_CHECK_RETURN (TAO_SERVANT_NOT_FOUND); 00587 00588 TAO_SERVANT_LOCATION servant_location = poa->locate_servant_i (id, 00589 servant 00590 ACE_ENV_ARG_PARAMETER); 00591 ACE_CHECK_RETURN (TAO_SERVANT_NOT_FOUND); 00592 00593 return servant_location; 00594 } |
|
Definition at line 486 of file Object_Adapter.cpp. References ACE_Map< poa_name, TAO_Root_POA * >::find(), poa_name, and transient_poa_map_. Referenced by find_poa().
00491 { 00492 int result = 0; 00493 00494 if (root) 00495 { 00496 poa = this->root_; 00497 } 00498 else 00499 { 00500 result = this->transient_poa_map_->find (system_name, 00501 poa); 00502 } 00503 00504 if (poa == 0 00505 || (result == 0 && !poa->validate_lifespan (false, poa_creation_time))) 00506 result = -1; 00507 00508 return result; 00509 } |
|
Helper method to get collocated servant.
Definition at line 963 of file Object_Adapter.cpp. References TAO_Profile::_key(), ACE_CATCHANY, ACE_DECLARE_NEW_CORBA_ENV, ACE_ENDTRY, ACE_ENV_ARG_PARAMETER, ACE_TRY, ACE_TRY_CHECK, find_servant(), TAO_MProfile::get_profile(), ACE_OS::memcmp(), TAO_MProfile::profile_count(), and TAO_PHandle. Referenced by create_collocated_object(), and initialize_collocated_object().
00964 { 00965 for (TAO_PHandle j = 0; 00966 j != mp.profile_count (); 00967 ++j) 00968 { 00969 const TAO_Profile *profile = mp.get_profile (j); 00970 TAO::ObjectKey_var objkey = profile->_key (); 00971 00972 if (ACE_OS::memcmp (objkey->get_buffer (), 00973 &TAO_Root_POA::objectkey_prefix[0], 00974 TAO_Root_POA::TAO_OBJECTKEY_PREFIX_SIZE) != 0) 00975 continue; 00976 00977 TAO_ServantBase *servant = 0; 00978 00979 ACE_DECLARE_NEW_CORBA_ENV; 00980 ACE_TRY 00981 { 00982 this->find_servant (objkey.in (), 00983 servant 00984 ACE_ENV_ARG_PARAMETER); 00985 ACE_TRY_CHECK; 00986 } 00987 ACE_CATCHANY 00988 { 00989 } 00990 ACE_ENDTRY; 00991 00992 return servant; 00993 } 00994 00995 return 0; 00996 } |
|
Initialize the default set of POA policies.
Definition at line 242 of file Object_Adapter.cpp. References ACE_CHECK, and ACE_ENV_ARG_PARAMETER. Referenced by open().
00244 { 00245 // Initialize the default policies. 00246 #if (TAO_HAS_MINIMUM_POA == 0) && !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO) 00247 00248 TAO::Portable_Server::ThreadPolicy thread_policy (PortableServer::ORB_CTRL_MODEL); 00249 policies.merge_policy (&thread_policy ACE_ENV_ARG_PARAMETER); 00250 ACE_CHECK; 00251 00252 #endif /* TAO_HAS_MINIMUM_POA == 0 */ 00253 00254 #if !defined (CORBA_E_MICRO) 00255 // Lifespan policy. 00256 TAO::Portable_Server::LifespanPolicy lifespan_policy (PortableServer::TRANSIENT); 00257 policies.merge_policy (&lifespan_policy ACE_ENV_ARG_PARAMETER); 00258 ACE_CHECK; 00259 #endif 00260 00261 #if !defined (CORBA_E_MICRO) 00262 // ID uniqueness policy. 00263 TAO::Portable_Server::IdUniquenessPolicy id_uniqueness_policy (PortableServer::UNIQUE_ID); 00264 policies.merge_policy (&id_uniqueness_policy ACE_ENV_ARG_PARAMETER); 00265 ACE_CHECK; 00266 #endif 00267 00268 #if !defined (CORBA_E_MICRO) 00269 // ID assignment policy. 00270 TAO::Portable_Server::IdAssignmentPolicy id_assignment_policy (PortableServer::SYSTEM_ID); 00271 policies.merge_policy (&id_assignment_policy ACE_ENV_ARG_PARAMETER); 00272 ACE_CHECK; 00273 #endif 00274 00275 #if (TAO_HAS_MINIMUM_POA == 0) && !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO) 00276 // Implicit activation policy. 00277 TAO::Portable_Server::ImplicitActivationPolicy implicit_activation_policy 00278 (PortableServer::NO_IMPLICIT_ACTIVATION); 00279 policies.merge_policy (&implicit_activation_policy ACE_ENV_ARG_PARAMETER); 00280 ACE_CHECK; 00281 00282 // Servant retention policy. 00283 TAO::Portable_Server::ServantRetentionPolicy servant_retention_policy 00284 (PortableServer::RETAIN); 00285 policies.merge_policy (&servant_retention_policy ACE_ENV_ARG_PARAMETER); 00286 ACE_CHECK; 00287 00288 // Request processing policy. 00289 TAO::Portable_Server::RequestProcessingPolicy request_processing_policy 00290 (PortableServer::USE_ACTIVE_OBJECT_MAP_ONLY); 00291 policies.merge_policy (&request_processing_policy ACE_ENV_ARG_PARAMETER); 00292 ACE_CHECK; 00293 #endif /* TAO_HAS_MINIMUM_POA == 0 */ 00294 #if defined (CORBA_E_MICRO) 00295 ACE_UNUSED_ARG (policies); 00296 #endif 00297 } |
|
Implements TAO_Adapter. Definition at line 938 of file Object_Adapter.cpp. References TAO_Stub::base_profiles(), TAO_Stub::collocated_servant(), TAO_Stub::forward_profiles(), get_collocated_servant(), TAO_Stub::is_collocated(), and TAO_Stub::servant_orb().
00939 { 00940 // If we have been forwarded: use the forwarded profiles 00941 const TAO_MProfile &mp = stub->forward_profiles () ? *(stub->forward_profiles ()) 00942 : stub->base_profiles (); 00943 00944 TAO_ServantBase *sb = this->get_collocated_servant (mp); 00945 00946 // Set the servant ORB. Do not duplicate the ORB here since 00947 // TAO_Stub::servant_orb() duplicates it. 00948 stub->servant_orb (this->orb_core_.orb ()); 00949 00950 // It is ok to set the object as a collocated object even when 00951 // <sb> is zero. 00952 stub->collocated_servant (sb); 00953 00954 // Mark the stub as collocated. This will set the strategized object 00955 // proxy broker if required. 00956 stub->is_collocated (true); 00957 00958 // Return 0 (success) iff we found a servant. 00959 return ! sb; 00960 } |
|
Definition at line 386 of file Object_Adapter.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_FUNCTION_TIMEPROBE, ACE_THROW, find_poa(), TAO_Root_POA::parse_key(), and poa_name. Referenced by find_servant_i(), locate_servant_i(), TAO::Portable_Server::Servant_Upcall::lookup_POA(), and TAO::Portable_Server::Servant_Upcall::prepare_for_upcall_i().
00390 { 00391 TAO_Object_Adapter::poa_name poa_system_name; 00392 CORBA::Boolean is_root = false; 00393 CORBA::Boolean is_persistent = false; 00394 CORBA::Boolean is_system_id = false; 00395 TAO::Portable_Server::Temporary_Creation_Time poa_creation_time; 00396 00397 int result = 0; 00398 00399 { 00400 ACE_FUNCTION_TIMEPROBE (TAO_POA_PARSE_KEY_START); 00401 00402 result = TAO_Root_POA::parse_key (key, 00403 poa_system_name, 00404 system_id, 00405 is_root, 00406 is_persistent, 00407 is_system_id, 00408 poa_creation_time); 00409 } 00410 00411 if (result != 0) 00412 ACE_THROW (CORBA::OBJ_ADAPTER ()); 00413 00414 { 00415 ACE_FUNCTION_TIMEPROBE (TAO_OBJECT_ADAPTER_FIND_POA_START); 00416 00417 result = this->find_poa (poa_system_name, 00418 is_persistent, 00419 is_root, 00420 poa_creation_time, 00421 poa 00422 ACE_ENV_ARG_PARAMETER); 00423 ACE_CHECK; 00424 } 00425 00426 if (result != 0) 00427 ACE_THROW (CORBA::OBJECT_NOT_EXIST (CORBA::OMGVMCID | 2, 00428 CORBA::COMPLETED_NO)); 00429 } |
|
Definition at line 53 of file Object_Adapter.i. References ACE_ENV_ARG_PARAMETER, locate_servant_i(), and TAO_OBJECT_ADAPTER_GUARD_RETURN.
00055 { 00056 // Lock access for the duration of this transaction. 00057 TAO_OBJECT_ADAPTER_GUARD_RETURN (-1); 00058 00059 return this->locate_servant_i (key 00060 ACE_ENV_ARG_PARAMETER); 00061 } |
|
Definition at line 538 of file Object_Adapter.cpp. References ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, ACE_FUNCTION_TIMEPROBE, locate_poa(), TAO_Root_POA::locate_servant_i(), TAO_DEFAULT_SERVANT, TAO_SERVANT_FOUND, TAO_SERVANT_LOCATION, TAO_SERVANT_MANAGER, and TAO_SERVANT_NOT_FOUND. Referenced by locate_servant().
00540 { 00541 ACE_FUNCTION_TIMEPROBE (TAO_POA_LOCATE_SERVANT_START); 00542 00543 PortableServer::ObjectId id; 00544 TAO_Root_POA *poa = 0; 00545 00546 this->locate_poa (key, 00547 id, 00548 poa 00549 ACE_ENV_ARG_PARAMETER); 00550 ACE_CHECK_RETURN (-1); 00551 00552 PortableServer::Servant servant = 0; 00553 TAO_SERVANT_LOCATION servant_location = 00554 poa->locate_servant_i (id, 00555 servant 00556 ACE_ENV_ARG_PARAMETER); 00557 ACE_CHECK_RETURN (-1); 00558 00559 switch (servant_location) 00560 { 00561 case TAO_SERVANT_FOUND: 00562 // Optimistic attitude 00563 case TAO_DEFAULT_SERVANT: 00564 case TAO_SERVANT_MANAGER: 00565 return 0; 00566 00567 case TAO_SERVANT_NOT_FOUND: 00568 return -1; 00569 } 00570 00571 return -1; 00572 } |
|
Definition at line 28 of file Object_Adapter.i. Referenced by TAO::Portable_Server::RequestProcessingStrategyServantLocator::locate_servant(), TAO::Portable_Server::Servant_Upcall::lookup_POA(), TAO::Portable_Server::Non_Servant_Upcall::Non_Servant_Upcall(), open(), TAO::Portable_Server::Servant_Upcall::prepare_for_upcall_i(), TAO::Portable_Server::Servant_Upcall::upcall_cleanup(), and TAO::Portable_Server::Non_Servant_Upcall::~Non_Servant_Upcall().
00029 { 00030 return *this->lock_; 00031 } |
|
Implements TAO_Adapter. Definition at line 902 of file Object_Adapter.cpp. References TAO_OBJID_ROOTPOA.
00903 { 00904 return TAO_OBJID_ROOTPOA; 00905 } |
|
Pointer to the non-servant upcall in progress. If no non-servant upcall is in progress, this pointer is zero. Definition at line 165 of file Object_Adapter.i. References non_servant_upcall_in_progress_.
00166 { 00167 return this->non_servant_upcall_in_progress_; 00168 } |
|
Implements TAO_Adapter. Definition at line 597 of file Object_Adapter.cpp. References TAO_Local_RefCounted_Object::_add_ref(), ACE_CHECK, ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_NEW, ACE_NEW_THROW_EX, TAO_POAManager_Factory::create_POAManager(), TAO_Servant_Dispatcher::create_Root_POA(), TAO_Root_POA::establish_components(), TAO_Objref_Var_T< T >::in(), init_default_policies(), lock(), TAO_Policy_Validator::merge_policies(), TAO_POA_Policy_Set::merge_policy(), TAO_Thread_Lane_Resources_Manager::open_default_resources(), poa_manager_factory_, PortableServer::POAManager_ptr, PortableServer::POAManager_var, PortableServer::POAManagerFactory_ptr, TAO_POA_Policy_Set::policies(), servant_dispatcher_, TAO_Root_POA::String, TAO_DEFAULT_ROOTPOA_NAME, TAO_DEFAULT_ROOTPOAMANAGER_NAME, TAO_ORB_Core::thread_lane_resources_manager(), thread_lock(), TAO_POA_Policy_Set::validate_policies(), and validator().
00598 { 00599 // Add in the default POA policies to the default list. 00600 this->init_default_policies (this->default_poa_policies () 00601 ACE_ENV_ARG_PARAMETER); 00602 ACE_CHECK; 00603 00604 // If a POA extension hasn't changed the servant dispatcher, initialize the 00605 // default one. 00606 if (this->servant_dispatcher_ == 0) 00607 { 00608 ACE_NEW (this->servant_dispatcher_, 00609 TAO_Default_Servant_Dispatcher); 00610 } 00611 00612 #if !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO) 00613 ACE_NEW_THROW_EX (this->poa_manager_factory_, 00614 TAO_POAManager_Factory (*this), 00615 CORBA::NO_MEMORY ()); 00616 00617 ::CORBA::PolicyList policy; 00618 PortableServer::POAManager_var poa_manager 00619 = poa_manager_factory_->create_POAManager (TAO_DEFAULT_ROOTPOAMANAGER_NAME, 00620 policy 00621 ACE_ENV_ARG_PARAMETER); 00622 ACE_CHECK; 00623 #else 00624 PortableServer::POAManager_var poa_manager; 00625 PortableServer::POAManager_ptr pm = PortableServer::POAManager::_nil (); 00626 ::CORBA::PolicyList policy_list; 00627 PortableServer::POAManagerFactory_ptr fptr; 00628 ACE_NEW_THROW_EX (pm, 00629 TAO_POA_Manager (*this, 0, policy_list, fptr), 00630 CORBA::NO_MEMORY 00631 (CORBA::SystemException::_tao_minor_code (0, ENOMEM), 00632 CORBA::COMPLETED_NO)); 00633 ACE_CHECK_RETURN (::PortableServer::POAManager::_nil ()); 00634 poa_manager = pm; 00635 #endif 00636 00637 // This makes sure that the default resources are open when the Root 00638 // POA is created. 00639 this->orb_core_.thread_lane_resources_manager ().open_default_resources (ACE_ENV_SINGLE_ARG_PARAMETER); 00640 ACE_CHECK; 00641 00642 TAO_POA_Policy_Set policies (this->default_poa_policies ()); 00643 00644 #if (TAO_HAS_MINIMUM_POA == 0) && !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO) 00645 // Specify the implicit activation policy since it should 00646 // be different from the default. Note that merge_policy 00647 // takes a const reference and makes its own copy of the 00648 // policy. (Otherwise, we'd have to allocate the policy 00649 // on the heap.) 00650 // Implicit activation policy. 00651 TAO::Portable_Server::ImplicitActivationPolicy implicit_activation_policy 00652 (PortableServer::IMPLICIT_ACTIVATION); 00653 policies.merge_policy (&implicit_activation_policy ACE_ENV_ARG_PARAMETER); 00654 ACE_CHECK; 00655 #endif /* TAO_HAS_MINIMUM_POA == 0 */ 00656 00657 // Merge policies from the ORB level. 00658 this->validator ().merge_policies (policies.policies () 00659 ACE_ENV_ARG_PARAMETER); 00660 ACE_CHECK; 00661 00662 // If any of the policy objects specified are not valid for the ORB 00663 // implementation, if conflicting policy objects are specified, or 00664 // if any of the specified policy objects require prior 00665 // administrative action that has not been performed, an 00666 // InvalidPolicy exception is raised containing the index in the 00667 // policies parameter value of the first offending policy object. 00668 policies.validate_policies (this->validator (), 00669 this->orb_core_ 00670 ACE_ENV_ARG_PARAMETER); 00671 ACE_CHECK; 00672 00673 // Construct a new POA 00674 TAO_Root_POA::String root_poa_name (TAO_DEFAULT_ROOTPOA_NAME); 00675 this->root_ = 00676 this->servant_dispatcher_->create_Root_POA (root_poa_name, 00677 poa_manager.in (), 00678 policies, 00679 this->lock (), 00680 this->thread_lock (), 00681 this->orb_core_, 00682 this 00683 ACE_ENV_ARG_PARAMETER); 00684 ACE_CHECK; 00685 00686 // The Object_Adapter will keep a reference to the Root POA so that 00687 // on its destruction, it can check whether the Root POA has been 00688 // destroyed yet or not. 00689 this->root_->_add_ref (); 00690 00691 // Lock access for the duration of this transaction. 00692 TAO::Portable_Server::POA_Guard poa_guard (*this->root_ ACE_ENV_ARG_PARAMETER); 00693 ACE_CHECK; 00694 00695 // Iterate over the registered IOR interceptors so that they may be 00696 // given the opportunity to add tagged components to the profiles 00697 // for this servant. 00698 this->root_->establish_components (ACE_ENV_SINGLE_ARG_PARAMETER); 00699 ACE_CHECK; 00700 } |
|
Access to ORB Core.
Definition at line 159 of file Object_Adapter.i.
00160 { 00161 return this->orb_core_; 00162 } |
|
Implements TAO_Adapter. Definition at line 752 of file Object_Adapter.cpp.
00753 {
00754 return 0;
00755 }
|
|
Definition at line 40 of file Object_Adapter.i.
00041 { 00042 return this->reverse_lock_; 00043 } |
|
Implements TAO_Adapter. Definition at line 908 of file Object_Adapter.cpp. References CORBA::Object::_duplicate().
00909 { 00910 return CORBA::Object::_duplicate (this->root_); 00911 } |
|
Access the root poa.
Definition at line 153 of file Object_Adapter.i.
00154 { 00155 return this->root_; 00156 } |
|
Set the servant dispatcher method. Ownership is transferred to this Object Adapter. Note: This should only be called at initialization. Definition at line 1273 of file Object_Adapter.cpp. References servant_dispatcher_.
01274 { 01275 if (this->servant_dispatcher_) 01276 delete this->servant_dispatcher_; 01277 01278 this->servant_dispatcher_ = dispatcher; 01279 } |
|
Definition at line 117 of file Object_Adapter.cpp. References TAO_Server_Strategy_Factory::Active_Object_Map_Creation_Parameters::poa_lookup_strategy_for_transient_id_policy_, ACE_Active_Map_Manager_Key::size(), TAO_ACTIVE_DEMUX, TAO_DYNAMIC_HASH, TAO_LINEAR, and transient_poa_name_size_. Referenced by TAO_Object_Adapter().
00118 { 00119 if (TAO_Object_Adapter::transient_poa_name_size_ == 0) 00120 { 00121 switch (creation_parameters.poa_lookup_strategy_for_transient_id_policy_) 00122 { 00123 #if (TAO_HAS_MINIMUM_POA_MAPS == 0) 00124 case TAO_LINEAR: 00125 TAO_Object_Adapter::transient_poa_name_size_ = 00126 sizeof (CORBA::ULong); 00127 break; 00128 case TAO_DYNAMIC_HASH: 00129 TAO_Object_Adapter::transient_poa_name_size_ = 00130 sizeof (CORBA::ULong); 00131 break; 00132 #endif /* TAO_HAS_MINIMUM_POA_MAPS == 0 */ 00133 case TAO_ACTIVE_DEMUX: 00134 default: 00135 TAO_Object_Adapter::transient_poa_name_size_ = 00136 static_cast <CORBA::ULong>( 00137 ACE_Active_Map_Manager_Key::size ()); 00138 break; 00139 } 00140 } 00141 } |
|
Definition at line 34 of file Object_Adapter.i. References thread_lock_. Referenced by open().
00035 { 00036 return this->thread_lock_; 00037 } |
|
Definition at line 47 of file Object_Adapter.i. References transient_poa_name_size_. Referenced by TAO_Root_POA::parse_key().
00048 { 00049 return TAO_Object_Adapter::transient_poa_name_size_; 00050 } |
|
Definition at line 145 of file Object_Adapter.i. References hint_strategy_, poa_name, and TAO_Object_Adapter::Hint_Strategy::unbind_persistent_poa(). Referenced by unbind_poa().
00147 { 00148 return this->hint_strategy_->unbind_persistent_poa (folded_name, 00149 system_name); 00150 } |
|
Definition at line 526 of file Object_Adapter.cpp. References TAO_Root_POA::persistent(), poa_name, unbind_persistent_poa(), and unbind_transient_poa(). Referenced by TAO_Root_POA::complete_destruction_i(), and TAO_Root_POA::TAO_Root_POA().
00529 { 00530 if (poa->persistent ()) 00531 return this->unbind_persistent_poa (folded_name, 00532 system_name); 00533 else 00534 return this->unbind_transient_poa (system_name); 00535 } |
|
Definition at line 139 of file Object_Adapter.i. References poa_name, transient_poa_map_, and ACE_Map< poa_name, TAO_Root_POA * >::unbind(). Referenced by unbind_poa().
00140 { 00141 return this->transient_poa_map_->unbind (system_name); 00142 } |
|
Return the validator.
Definition at line 10 of file Object_Adapter.i. References default_validator_. Referenced by open().
00011 { 00012 return this->default_validator_; 00013 } |
|
Non-exception throwing version.
Definition at line 1255 of file Object_Adapter.cpp. References ACE_CATCHANY, ACE_ENDTRY, ACE_ERROR, ACE_TRY_CHECK, ACE_TRY_ENV, ACE_TRY_NEW_ENV, and LM_ERROR.
01256 { 01257 // Non-exception throwing version. 01258 ACE_TRY_NEW_ENV 01259 { 01260 this->wait_for_non_servant_upcalls_to_complete (ACE_TRY_ENV); 01261 ACE_TRY_CHECK; 01262 } 01263 ACE_CATCHANY 01264 { 01265 ACE_ERROR ((LM_ERROR, 01266 "TAO_Object_Adapter::wait_for_non_servant_upcalls_to_complete " 01267 "threw exception it should not have!\n")); 01268 } 01269 ACE_ENDTRY; 01270 } |
|
Wait for non-servant upcalls to complete.
Definition at line 1232 of file Object_Adapter.cpp. References ACE_THROW, ACE_TRY_ENV, enable_locking_, non_servant_upcall_condition_, non_servant_upcall_in_progress_, and ACE_OS::thr_equal(). Referenced by TAO::Portable_Server::Servant_Upcall::lookup_POA(), TAO::Portable_Server::Servant_Upcall::prepare_for_upcall_i(), and TAO::Portable_Server::Servant_Upcall::upcall_cleanup().
01233 { 01234 #if defined (ACE_HAS_EXCEPTIONS) 01235 ACE_UNUSED_ARG (ACE_TRY_ENV); // FUZZ: ignore check_for_ace_check 01236 #endif 01237 01238 // Check if a non-servant upcall is in progress. If a non-servant 01239 // upcall is in progress, wait for it to complete. Unless of 01240 // course, the thread making the non-servant upcall is this thread. 01241 while (this->enable_locking_ && 01242 this->non_servant_upcall_in_progress_ && 01243 ! ACE_OS::thr_equal (this->non_servant_upcall_thread_, 01244 ACE_OS::thr_self ())) 01245 { 01246 // If so wait... 01247 int result = 01248 this->non_servant_upcall_condition_.wait (); 01249 if (result == -1) 01250 ACE_THROW (CORBA::OBJ_ADAPTER ()); 01251 } 01252 } |
|
Definition at line 298 of file Object_Adapter.h. |
|
Definition at line 328 of file Object_Adapter.h. |
|
Definition at line 464 of file Object_Adapter.h. |
|
Definition at line 466 of file Object_Adapter.h. |
|
Definition at line 78 of file Object_Adapter.h. |
|
Save a list of default policies that should be included in every POA (unless overridden). Definition at line 506 of file Object_Adapter.h. Referenced by default_poa_policies(). |
|
The default validator and the beginning of the chain of policy validators. Definition at line 502 of file Object_Adapter.h. Referenced by validator(). |
|
Definition at line 401 of file Object_Adapter.h. Referenced by enable_locking(), TAO::Portable_Server::Servant_Upcall::poa_cleanup(), TAO::Portable_Server::Servant_Upcall::servant_cleanup(), TAO_Root_POA::wait_for_completions(), wait_for_non_servant_upcalls_to_complete(), and TAO::Portable_Server::Non_Servant_Upcall::~Non_Servant_Upcall(). |
|
Definition at line 332 of file Object_Adapter.h. Referenced by bind_persistent_poa(), find_persistent_poa(), TAO_Object_Adapter(), unbind_persistent_poa(), and ~TAO_Object_Adapter(). |
|
Definition at line 405 of file Object_Adapter.h. |
|
Condition variable for waiting on non-servant upcalls to end.
Definition at line 482 of file Object_Adapter.h. Referenced by wait_for_non_servant_upcalls_to_complete(), and TAO::Portable_Server::Non_Servant_Upcall::~Non_Servant_Upcall(). |
|
Pointer to the non-servant upcall in progress. If no non-servant upcall is in progress, this pointer is zero. Definition at line 486 of file Object_Adapter.h. Referenced by TAO::Portable_Server::Non_Servant_Upcall::Non_Servant_Upcall(), non_servant_upcall_in_progress(), wait_for_non_servant_upcalls_to_complete(), and TAO::Portable_Server::Non_Servant_Upcall::~Non_Servant_Upcall(). |
|
Current nesting level of non_servant_upcalls.
Definition at line 489 of file Object_Adapter.h. Referenced by TAO::Portable_Server::Non_Servant_Upcall::Non_Servant_Upcall(), and TAO::Portable_Server::Non_Servant_Upcall::~Non_Servant_Upcall(). |
|
Id of thread making the non-servant upcall.
Definition at line 492 of file Object_Adapter.h. Referenced by TAO::Portable_Server::Non_Servant_Upcall::Non_Servant_Upcall(), and TAO::Portable_Server::Non_Servant_Upcall::~Non_Servant_Upcall(). |
|
Definition at line 399 of file Object_Adapter.h. |
|
Persistent POA map.
Definition at line 388 of file Object_Adapter.h. Referenced by TAO_Object_Adapter::No_Hint_Strategy::bind_persistent_poa(), TAO_Object_Adapter::Active_Hint_Strategy::bind_persistent_poa(), TAO_Object_Adapter::No_Hint_Strategy::find_persistent_poa(), TAO_Object_Adapter::Active_Hint_Strategy::find_persistent_poa(), TAO_Object_Adapter(), TAO_Object_Adapter::No_Hint_Strategy::unbind_persistent_poa(), TAO_Object_Adapter::Active_Hint_Strategy::unbind_persistent_poa(), and ~TAO_Object_Adapter(). |
|
The POAManager factory.
Definition at line 498 of file Object_Adapter.h. |
|
Definition at line 407 of file Object_Adapter.h. |
|
The Root POA.
Definition at line 495 of file Object_Adapter.h. |
|
Strategy for dispatching a request to a servant.
Definition at line 385 of file Object_Adapter.h. Referenced by open(), TAO::Portable_Server::Servant_Upcall::post_invoke(), TAO::Portable_Server::Servant_Upcall::pre_invoke_collocated_request(), TAO::Portable_Server::Servant_Upcall::pre_invoke_remote_request(), servant_dispatcher(), and ~TAO_Object_Adapter(). |
|
Definition at line 403 of file Object_Adapter.h. Referenced by thread_lock(). |
|
Transient POA map.
Definition at line 391 of file Object_Adapter.h. Referenced by bind_transient_poa(), find_transient_poa(), TAO_Object_Adapter(), unbind_transient_poa(), and ~TAO_Object_Adapter(). |
|
Definition at line 114 of file Object_Adapter.cpp. Referenced by set_transient_poa_name_size(), and transient_poa_name_size(). |