#include <ORB_Core.h>
Collaboration diagram for TAO_ORB_Core:

Collocation Strategies | |
| enum | { ORB_CONTROL, THRU_POA, DIRECT } |
| TAO::Collocation_Strategy | collocation_strategy (CORBA::Object_ptr object) |
Public Types | |
| typedef void(* | Timeout_Hook )(TAO_ORB_Core *, TAO_Stub *, bool &, ACE_Time_Value &) |
| Define the Timeout_Hook signature. | |
| typedef void(* | Sync_Scope_Hook )(TAO_ORB_Core *, TAO_Stub *, bool &, Messaging::SyncScope &) |
| typedef ACE_Array_Map< ACE_CString, ACE_CString > | InitRefMap |
Public Member Functions | |
| TAO_ORB_Core (const char *id) | |
| Constructor. | |
| TAO_ORB_Parameters * | orb_params (void) |
| Accessor for the ORB parameters. | |
| TAO_Connector_Registry * | connector_registry () |
| Get the connector registry. | |
| TAO_Parser_Registry * | parser_registry (void) |
| Get the IOR parser registry. | |
| TAO::PolicyFactory_Registry_Adapter * | policy_factory_registry (void) |
| TAO::ORBInitializer_Registry_Adapter * | orbinitializer_registry (void) |
| TAO_ProtocolFactorySet * | protocol_factories (void) |
| Get the protocol factories. | |
| CORBA::ORB_ptr | orb (void) |
| Get pointer to the ORB. | |
| ACE_Reactor * | reactor (void) |
| Wrappers that forward the request to the concurrency strategy. | |
| ACE_Thread_Manager * | thr_mgr (void) |
| Get the ACE_Thread_Manager. | |
| CORBA::Object_ptr | root_poa () |
| Return the RootPOA, or try to load it if not initialized already. | |
| TAO_Adapter_Registry * | adapter_registry (void) |
| Get the adapter registry. | |
| TAO_Adapter * | poa_adapter (void) |
| TAO_Protocols_Hooks * | get_protocols_hooks (void) |
| Gets the value of TAO_ORB_Core::protocols_hooks__. | |
| int | is_collocated (const TAO_MProfile &mprofile) |
| ACE_Allocator * | output_cdr_dblock_allocator (void) |
| ACE_Allocator * | output_cdr_buffer_allocator (void) |
| ACE_Allocator * | output_cdr_msgblock_allocator (void) |
| ACE_Allocator * | input_cdr_dblock_allocator (void) |
| ACE_Allocator * | input_cdr_buffer_allocator (void) |
| ACE_Allocator * | input_cdr_msgblock_allocator (void) |
| ACE_Allocator * | transport_message_buffer_allocator (void) |
| ACE_Data_Block * | create_input_cdr_data_block (size_t size) |
| ACE_Lock * | locking_strategy (void) |
| Return the locking strategy used for the data blocks. | |
| TAO_Policy_Set * | get_default_policies (void) |
| Accessor method for the default_policies_. | |
| CORBA::Policy_ptr | get_policy (CORBA::PolicyType type) |
| CORBA::Policy_ptr | get_policy_including_current (CORBA::PolicyType type) |
| CORBA::Policy_ptr | get_cached_policy (TAO_Cached_Policy_Type type) |
| CORBA::Policy_ptr | get_cached_policy_including_current (TAO_Cached_Policy_Type type) |
| TAO_Policy_Manager * | policy_manager (void) |
| Return the Policy_Manager for this ORB. | |
| TAO_Policy_Current & | policy_current (void) |
| void | call_timeout_hook (TAO_Stub *stub, bool &has_timeout, ACE_Time_Value &time_value) |
| Invoke the timeout hook if present. | |
| void | connection_timeout (TAO_Stub *stub, bool &has_timeout, ACE_Time_Value &time_value) |
| Invoke the timeout hook if present. | |
| void | call_sync_scope_hook (TAO_Stub *stub, bool &has_synchronization, Messaging::SyncScope &scope) |
| TAO::Transport_Queueing_Strategy & | get_transport_queueing_strategy (TAO_Stub *stub, Messaging::SyncScope &scope) |
| TAO_ORB_Core_TSS_Resources * | get_tss_resources (void) |
| Obtain the TSS resources of this orb. | |
| void * | get_tss_resource (size_t slot_id) |
| Obtain the TSS resource in the given slot. | |
| int | set_tss_resource (size_t slot_id, void *) |
| int | add_tss_cleanup_func (ACE_CLEANUP_FUNC cleanup, size_t &slot_id) |
| TAO_Cleanup_Func_Registry * | tss_cleanup_funcs (void) |
| Return the underlying TSS cleanup function registry. | |
| TAO_Leader_Follower & | leader_follower (void) |
| Get access to the leader_follower class. | |
| TAO_LF_Strategy & | lf_strategy (void) |
| Get access to the leader follower strategy. | |
| TAO_Thread_Lane_Resources & | lane_resources (void) |
| Get access to the thread lane resources. | |
| int | run (ACE_Time_Value *tv, int perform_work) |
| Run the event loop. | |
| void | shutdown (CORBA::Boolean wait_for_completion) |
| End the event loop. | |
| int | has_shutdown (void) |
| Get the shutdown flag value. | |
| void | destroy () |
| Shutdown the ORB and free resources. | |
| void | check_shutdown () |
| Check if ORB has shutdown. If it has, throw an exception. | |
| int | thread_per_connection_timeout (ACE_Time_Value &timeout) const |
| TAO_Stub * | create_stub_object (TAO_MProfile &mprofile, const char *type_id, CORBA::PolicyList *policy_list) |
| TAO_Stub * | create_stub (const char *repository_id, const TAO_MProfile &profiles) |
| CORBA::Object_ptr | create_object (TAO_Stub *the_stub) |
| CORBA::Long | initialize_object (TAO_Stub *the_stub, CORBA::Object_ptr obj) |
| CORBA::Long | reinitialize_object (TAO_Stub *stub) |
| const char * | orbid (void) const |
| Return ORBid string. | |
| CORBA::Boolean | use_implrepo (void) |
| Do we attempt to register with the Implementation Repository. | |
| CORBA::Boolean | imr_endpoints_in_ior (void) |
| Do we put the ImR's endpoints into persistent object references we create. | |
| CORBA::Object_ptr | resolve_typecodefactory () |
| Resolve the TypeCodeFactory DLL. | |
| CORBA::Object_ptr | resolve_picurrent () |
| Resolve the PICurrent. | |
| CORBA::Object_ptr | resolve_poa_current () |
| Resolve POA Current. | |
| CORBA::Object_ptr | resolve_codecfactory () |
| Resolve the CodecFactory DLL. | |
| CORBA::Object_ptr | resolve_dynanyfactory () |
| Resolve the Dynamic Any Factory. | |
| CORBA::Object_ptr | resolve_ior_manipulation () |
| Resolve the IOR Manipulation reference for this ORB. | |
| CORBA::Object_ptr | resolve_ior_table () |
| Resolve the IOR Table reference for this ORB. | |
| CORBA::Object_ptr | resolve_rir (const char *name) |
| Resolve an initial reference via the -ORBInitRef and. | |
| CORBA::Object_ptr | resolve_rt_orb (void) |
| Resolve the RT ORB reference for this ORB. | |
| const char * | server_id (void) const |
| CORBA::ORB_ObjectIdList * | list_initial_references () |
| List all the service known by the ORB. | |
| CORBA::ULong | _incr_refcnt (void) |
| Reference counting... | |
| CORBA::ULong | _decr_refcnt (void) |
| int | register_handle (ACE_HANDLE handle) |
| int | remove_handle (ACE_HANDLE handle) |
| TAO_Valuetype_Adapter * | valuetype_adapter (void) |
| Return the valuetype adapter. | |
| TAO_IORInterceptor_Adapter * | ior_interceptor_adapter (void) |
| CORBA::Boolean | bidir_giop_policy (void) |
| void | bidir_giop_policy (CORBA::Boolean) |
| TAO_Object_Ref_Table & | object_ref_table (void) |
| TAO::ObjectKey_Table & | object_key_table (void) |
| Acceessor to the table that stores the object_keys. | |
| TAO_Request_Dispatcher * | request_dispatcher (void) |
| Return the current request dispatcher strategy. | |
| void | request_dispatcher (TAO_Request_Dispatcher *rd) |
| void | load_policy_validators (TAO_Policy_Validator &validator) |
| TAO_Flushing_Strategy * | flushing_strategy (void) |
| Return the flushing strategy. | |
| TAO_Codeset_Manager * | codeset_manager (void) |
| Get Code Set Manager. | |
| InitRefMap * | init_ref_map (void) |
| Return a pointer to the -ORBInitRef map. | |
| void | set_default (const char *orb_id) |
| void | not_default (const char *orb_id) |
| Choose to be not a default ORB when there is more than one ORB. | |
| TAO::Transport_Queueing_Strategy & | default_transport_queueing_strategy (void) |
| CORBA::Boolean | is_permanent_forward_condition (const CORBA::Object_ptr obj, const TAO_Service_Context &service_context) |
| ACE_Service_Gestalt * | configuration () const |
| Configuration accessor method. | |
| auto_ptr< TAO_GIOP_Fragmentation_Strategy > | fragmentation_strategy (TAO_Transport *transport) |
| Get outgoing fragmentation strategy. | |
Helper methods used by the Invocation classes. | |
| CORBA::Object_ptr | poa_current (void) |
| void | optimize_collocation_objects (CORBA::Boolean opt) |
| CORBA::Boolean | optimize_collocation_objects (void) const |
| void | use_global_collocation (CORBA::Boolean opt) |
| CORBA::Boolean | use_global_collocation (void) const |
| CORBA::ULong | get_collocation_strategy (void) const |
Access to Factories | |
These factories are not thread-specific, and are presented here in order to have one place to get useful information. Often, the instances to which the return pointers are stored in the Service Repository. | |
| TAO_Resource_Factory * | resource_factory (void) |
| Returns pointer to the resource factory. | |
| TAO::GUIResource_Factory * | gui_resource_factory (void) |
| Returns pointer to the factory for creating gui resources. | |
| TAO_Client_Strategy_Factory * | client_factory (void) |
| Returns pointer to the client factory. | |
| TAO_Server_Strategy_Factory * | server_factory (void) |
| Returns pointer to the server factory. | |
| TAO_Protocols_Hooks * | protocols_hooks (void) |
| Returns pointer to the Protocols_Hooks. | |
| TAO_Thread_Lane_Resources_Manager & | thread_lane_resources_manager (void) |
| Returns a pointer to the Thread Lane Resources Manager. | |
| TAO_Collocation_Resolver & | collocation_resolver (void) |
| Returns a pointer to the Collocation Resolver. | |
| TAO_Stub_Factory * | stub_factory (void) |
| Returns a pointer to the Stub factory. | |
| TAO_Endpoint_Selector_Factory * | endpoint_selector_factory (void) |
| Returns a pointer to the endpoint selector factory. | |
| CORBA::Environment * | default_environment (void) const |
| void | default_environment (CORBA::Environment *) |
| CORBA::Object_ptr | implrepo_service (void) |
| void | implrepo_service (const CORBA::Object_ptr ir) |
ORB Core Service Hooks | |
These methods would represent the hooks in the ORB Core. These hooks would be used to call back on the services or other features that are dynamically loaded. | |
| CORBA::Boolean | service_profile_selection (TAO_MProfile &mprofile, TAO_Profile *&profile) |
| CORBA::Boolean | service_profile_reselection (TAO_Stub *stub, TAO_Profile *&profile) |
| void | reset_service_profile_flags (void) |
| Reset the flags in the loaded services. | |
| CORBA::Boolean | object_is_nil (CORBA::Object_ptr object) |
| TAO_Service_Callbacks::Profile_Equivalence | is_profile_equivalent (const TAO_Profile *this_p, const TAO_Profile *that_p) |
| CORBA::ULong | hash_service (TAO_Profile *this_p, CORBA::ULong max) |
| void | service_context_list (TAO_Stub *stub, TAO_Service_Context &service_context, CORBA::Boolean retstart) |
| TAO_Fault_Tolerance_Service & | fault_tolerance_service (void) |
| Return a reference to the Fault Tolerant service object. | |
| TAO::Invocation_Status | service_raise_comm_failure (IOP::ServiceContextList &clist, TAO_Profile *profile) |
| TAO::Invocation_Status | service_raise_transient_failure (IOP::ServiceContextList &clist, TAO_Profile *profile) |
Portable Interceptor Related Methods | |
These are support methods for interceptor registration and interceptor set (an array) access, in addition to PICurrent access. | |
| CORBA::Object_ptr | pi_current (void) |
| Return a pointer to the cached TAO::PICurrent object. | |
| void | pi_current (CORBA::Object_ptr current) |
| Set the pointer to the cached TAO::PICurrent object. | |
| void | add_interceptor (PortableInterceptor::ClientRequestInterceptor_ptr interceptor) |
| Register a client request interceptor. | |
| void | add_interceptor (PortableInterceptor::ServerRequestInterceptor_ptr interceptor) |
| Register a server request interceptor. | |
| void | add_interceptor (PortableInterceptor::ClientRequestInterceptor_ptr interceptor, const CORBA::PolicyList &policies) |
| Register a client request interceptor with policies. | |
| void | add_interceptor (PortableInterceptor::ServerRequestInterceptor_ptr interceptor, const CORBA::PolicyList &policies) |
| Register a server request interceptor with policies. | |
| TAO::ClientRequestInterceptor_Adapter * | clientrequestinterceptor_adapter (void) |
| TAO::ServerRequestInterceptor_Adapter * | serverrequestinterceptor_adapter (void) |
| void | add_interceptor (PortableInterceptor::IORInterceptor_ptr interceptor) |
| Register an IOR interceptor. | |
Static Public Member Functions | |
| void | set_thread_lane_resources_manager_factory (const char *thread_lane_resources_manager_factory_name) |
| void | set_collocation_resolver (const char *collocation_resolver_name) |
| Sets the value of TAO_ORB_Core::collocation_resolver_name_. | |
| void | set_stub_factory (const char *stub_factory_name) |
| Sets the value of TAO_ORB_Core::stub_factory_name_. | |
| void | set_resource_factory (const char *resource_factory_name) |
| Sets the value of TAO_ORB_Core::resource_factory_. | |
| void | set_gui_resource_factory (TAO::GUIResource_Factory *gui_factory) |
| void | set_protocols_hooks (const char *protocols_hooks_name) |
| Sets the value of TAO_ORB_Core::protocols_hooks_. | |
| void | set_endpoint_selector_factory (const char *endpoint_selector_factory_name) |
| Sets the value of TAO_ORB_Core::endpoint_selector_factory_. | |
| void | set_poa_factory (const char *poa_factory_name, const char *poa_factory_directive) |
| const ACE_CString & | poa_factory_name (void) |
| Access the POA factory name. | |
| void | dynamic_adapter_name (const char *name) |
| Sets the value of TAO_ORB_Core::dynamic_adapter_name_. | |
| const char * | dynamic_adapter_name (void) |
| Gets the value of TAO_ORB_Core::dynamic_adapter_name_. | |
| void | ifr_client_adapter_name (const char *name) |
| Sets the value of TAO_ORB_Core::ifr_client_adapter_name_. | |
| const char * | ifr_client_adapter_name (void) |
| Gets the value of TAO_ORB_Core::ifr_client_adapter_name_. | |
| void | typecodefactory_adapter_name (const char *name) |
| Sets the value of TAO_ORB_Core::typecodefactory_adapter_name_. | |
| const char * | typecodefactory_adapter_name (void) |
| Gets the value of TAO_ORB_Core::typecodefactory_adapter_name_. | |
| void | iorinterceptor_adapter_factory_name (const char *name) |
| Sets the value of TAO_ORB_Core::iorinterceptor_adapter_factory_name_. | |
| const char * | iorinterceptor_adapter_factory_name (void) |
| Gets the value of TAO_ORB_Core::iorinterceptor_adapter_factory_name_. | |
| void | valuetype_adapter_factory_name (const char *name) |
| Sets the value of TAO_ORB_Core::valuetype_adapter_factory_name. | |
| const char * | valuetype_adapter_factory_name (void) |
| Gets the value of TAO_ORB_Core::valuetype_adapter_factory_name. | |
| void | set_timeout_hook (Timeout_Hook hook) |
| void | connection_timeout_hook (Timeout_Hook hook) |
| Define the Timeout_Hook signature. | |
| void | set_sync_scope_hook (Sync_Scope_Hook hook) |
Public Attributes | |
| TAO_Protocols_Hooks * | protocols_hooks_ |
| Handle to the factory for protocols_hooks_.. | |
Protected Member Functions | |
| ~TAO_ORB_Core (void) | |
| int | init (int &argc, char **argv) |
| int | fini (void) |
| ACE_Data_Block * | create_data_block_i (size_t size, ACE_Allocator *buffer_allocator, ACE_Allocator *dblock_allocator, ACE_Lock *lock) |
| Routine that creates a ACE_Data_Block given the lock and allocators. | |
| void | resolve_typecodefactory_i () |
| Obtain and cache the typecode factory object reference. | |
| void | resolve_poa_current_i () |
| Obtain and cache the poa current. | |
| void | resolve_picurrent_i () |
| Obtain and cache the picurrent factory object reference. | |
| TAO::ClientRequestInterceptor_Adapter * | clientrequestinterceptor_adapter_i (void) |
| TAO::ServerRequestInterceptor_Adapter * | serverrequestinterceptor_adapter_i (void) |
| void | resolve_codecfactory_i () |
| Obtain and cache the codec factory object reference. | |
| void | resolve_dynanyfactory_i () |
| Obtain and cache the dynamic any factory object reference. | |
| void | resolve_iormanipulation_i () |
| Obtain and cache the IORManipulation factory object reference. | |
| void | services_callbacks_init (void) |
| void | destroy_interceptors () |
| int | set_endpoint_helper (const ACE_CString &lane, const ACE_CString &endpoints) |
| TAO::PolicyFactory_Registry_Adapter * | policy_factory_registry_i (void) |
| TAO::ORBInitializer_Registry_Adapter * | orbinitializer_registry_i (void) |
| CORBA::Long | initialize_object_i (TAO_Stub *the_stub, const TAO_MProfile &mprofile) |
| Common code from ::initialize_object and ::reinitialize_object. | |
| ACE_TSS_TYPE (TAO_ORB_Core_TSS_Resources) tss_resources_ | |
| This is where the tss resources for this ORB are stored. | |
Protected Attributes | |
| TAO_SYNCH_MUTEX | lock_ |
| Synchronize internal state... | |
| TAO_Thread_Lane_Resources_Manager * | thread_lane_resources_manager_ |
| TAO_Collocation_Resolver * | collocation_resolver_ |
| TAO_Stub_Factory * | stub_factory_ |
| TAO_ProtocolFactorySet * | protocol_factories_ |
| CORBA::Object_ptr | implrepo_service_ |
| The cached IOR for the Implementation Repository. | |
| int | use_implrepo_ |
| Flag for whether the implrepo support is enabled or not. | |
| int | imr_endpoints_in_ior_ |
| Flag for whether to put the ImR endpoints into our object refs. | |
| CORBA::Object_ptr | typecode_factory_ |
| The cached IOR for the TypeCodeFactory DLL. | |
| CORBA::Object_ptr | codec_factory_ |
| The cached IOR for the CodecFactory DLL. | |
| CORBA::Object_ptr | dynany_factory_ |
| The cached object reference for the DynAnyFactory. | |
| CORBA::Object_ptr | ior_manip_factory_ |
| The cached object reference for the IORManipulataion. | |
| CORBA::Object_ptr | ior_table_ |
| The cached object reference for the IORTable. | |
| CORBA::Object_var | rt_orb_ |
| The cached object reference for the RTCORBA::RTORB. | |
| CORBA::Object_var | rt_current_ |
| The cached object reference for the RTCORBA::Current interface. | |
| CORBA::ORB_ptr | orb_ |
| CORBA::Object_var | root_poa_ |
| TAO_ORB_Parameters | orb_params_ |
| Parameters used by the ORB. | |
| InitRefMap | init_ref_map_ |
| Return InitRefMap to find if a particular object id is present. | |
| TAO_Object_Ref_Table | object_ref_table_ |
| TAO::ObjectKey_Table | object_key_table_ |
| Table that stores the object key instead of caching one per-profile. | |
| char * | orbid_ |
| The ORBid for this ORB. | |
| TAO_Resource_Factory * | resource_factory_ |
| Handle to the factory for resource information.. | |
| ACE_CString | server_id_ |
| The server_id_ that was passed via -ORBServerId option. | |
| TAO_Client_Strategy_Factory * | client_factory_ |
| Handle to the factory for Client-side strategies. | |
| TAO_Server_Strategy_Factory * | server_factory_ |
| Handle to the factory for Server-side strategies. | |
| CORBA::Boolean | opt_for_collocation_ |
| CORBA::Boolean | use_global_collocation_ |
| CORBA::ULong | collocation_strategy_ |
| Default collocation policy. This should never be ORB_CONTROL. | |
| TAO_Policy_Manager * | policy_manager_ |
| The Policy_Manager for this ORB. | |
| TAO_Policy_Set * | default_policies_ |
| The default policies. | |
| TAO_Policy_Current * | policy_current_ |
| Policy current. | |
| TAO_Request_Dispatcher * | request_dispatcher_ |
| The request dispatching strategy. | |
| CORBA::Object_var | poa_current_ |
| TAO_Adapter_Registry | adapter_registry_ |
| The list of Adapters used in this ORB. | |
| TAO_Adapter * | poa_adapter_ |
| An optimization for the POA. | |
| ACE_Thread_Manager | tm_ |
| The Thread Manager. | |
| ACE_Lock_Adapter< TAO_SYNCH_MUTEX > | data_block_lock_ |
| The data block reference counts are locked using this mutex. | |
| TAO_Cleanup_Func_Registry | tss_cleanup_funcs_ |
| int | has_shutdown_ |
| Flag which denotes that the ORB has been shutdown. | |
| TAO_SYNCH_MUTEX | open_lock_ |
| Mutual exclusion for calling open. | |
| int | open_called_ |
| Flag which denotes that the open method was called. | |
| TAO_Endpoint_Selector_Factory * | endpoint_selector_factory_ |
| TAO::Transport_Queueing_Strategy * | eager_transport_queueing_strategy_ |
| This strategy will buffer messages. | |
| TAO::Transport_Queueing_Strategy * | delayed_transport_queueing_strategy_ |
| This strategy will buffer messages. | |
| TAO::Transport_Queueing_Strategy * | flush_transport_queueing_strategy_ |
| TAO::Transport_Queueing_Strategy * | default_transport_queueing_strategy_ |
| This strategy will not queue by default and not flush. | |
| CORBA::ULong | refcount_ |
| Number of outstanding references to this object. | |
| TAO::PolicyFactory_Registry_Adapter * | policy_factory_registry_ |
| Registry containing all registered policy factories. | |
| TAO::ORBInitializer_Registry_Adapter * | orbinitializer_registry_ |
| Registry containing all orb initializers. | |
| CORBA::Object_ptr | pi_current_ |
| Cached pointer/reference to the PICurrent object. | |
| TAO::ClientRequestInterceptor_Adapter * | client_request_interceptor_adapter_ |
| The adapter for handling client request interceptors. | |
| TAO::ServerRequestInterceptor_Adapter * | server_request_interceptor_adapter_ |
| The adapter for handling server request interceptors. | |
| TAO_IORInterceptor_Adapter * | ior_interceptor_adapter_ |
| IORInterceptor adapter. | |
| TAO_Valuetype_Adapter * | valuetype_adapter_ |
| Pointer to the valuetype adapter. | |
| TAO_Parser_Registry | parser_registry_ |
| The IOR parser registry. | |
| TAO_BiDir_Adapter * | bidir_adapter_ |
| BiDirectional GIOP factory. | |
| CORBA::Boolean | bidir_giop_policy_ |
| Bir Dir GIOP policy value. | |
| TAO_Flushing_Strategy * | flushing_strategy_ |
| Hold the flushing strategy. | |
| TAO_Codeset_Manager * | codeset_manager_ |
| Code Set Manager - points to service object in the service repo. | |
| ACE_Service_Gestalt * | config_ |
| ORB's service configuration. | |
Service Level Hooks | |
| TAO_Fault_Tolerance_Service | ft_service_ |
| Fault Tolerant service hook. | |
| int | thread_per_connection_use_timeout_ |
| ACE_Time_Value | thread_per_connection_timeout_ |
Private Member Functions | |
| void | resolve_ior_table_i () |
| Obtain and cache the dynamic any factory object reference. | |
| CORBA::Boolean | is_collocation_enabled (TAO_ORB_Core *other_orb, const TAO_MProfile &mp) |
| TAO_ORB_Core (const TAO_ORB_Core &) | |
| void | operator= (const TAO_ORB_Core &) |
| TAO::Transport_Queueing_Strategy & | eager_transport_queueing_strategy (void) |
| TAO::Transport_Queueing_Strategy & | delayed_transport_queueing_strategy (void) |
| TAO::Transport_Queueing_Strategy & | flush_transport_queueing_strategy (void) |
Private Attributes | |
| bool | use_local_memory_pool_ |
Friends | |
| class | TAO_ORB_Core_Auto_Ptr |
| CORBA::ORB_ptr | CORBA::ORB_init (int &, char *argv[], const char *, CORBA::Environment &) |
This is the implementation class for the CORBA::ORB interface. The class also encapsulates the access to the ORB resources and its state.
Definition at line 158 of file ORB_Core.h.
|
|
Definition at line 900 of file ORB_Core.h. |
|
|
Definition at line 551 of file ORB_Core.h. Referenced by call_sync_scope_hook(), and set_sync_scope_hook(). |
|
|
Define the Timeout_Hook signature.
Definition at line 492 of file ORB_Core.h. Referenced by call_timeout_hook(), connection_timeout(), connection_timeout_hook(), and set_timeout_hook(). |
|
|
Definition at line 224 of file ORB_Core.h.
00225 {
00226 /// Indicate object should refer to ORB for either one of the
00227 /// following strategies.
00228 ORB_CONTROL,
00229
00230 /// Collocated calls will go thru POA.
00231 THRU_POA,
00232
00233 /// Collocated calls invoke operation on Servant directly.
00234 DIRECT
00235 };
|
|
|
Constructor.
Definition at line 204 of file ORB_Core.cpp. References ACE_NEW, ACE_OS::strnlen(), TAO_DEFAULT_OBJECT_REF_TABLE_SIZE, TAO_HAS_BUFFERING_CONSTRAINT_POLICY, TAO_HAS_CORBA_MESSAGING, TAO_POLICY_ORB_SCOPE, and TAO_USE_LOCAL_MEMORY_POOL.
00205 : protocols_hooks_ (0), 00206 #if TAO_USE_LOCAL_MEMORY_POOL == 1 00207 use_local_memory_pool_ (true), 00208 #else 00209 use_local_memory_pool_ (false), 00210 #endif 00211 lock_ (), 00212 thread_lane_resources_manager_ (0), 00213 collocation_resolver_ (0), 00214 stub_factory_ (0), 00215 protocol_factories_ (0), 00216 implrepo_service_ (CORBA::Object::_nil ()), 00217 use_implrepo_ (0), 00218 imr_endpoints_in_ior_ (1), 00219 typecode_factory_ (CORBA::Object::_nil ()), 00220 codec_factory_ (CORBA::Object::_nil ()), 00221 dynany_factory_ (CORBA::Object::_nil ()), 00222 ior_manip_factory_ (CORBA::Object::_nil ()), 00223 ior_table_ (CORBA::Object::_nil ()), 00224 orb_ (CORBA::ORB::_nil ()), 00225 root_poa_ (), 00226 orb_params_ (), 00227 init_ref_map_ (TAO_DEFAULT_OBJECT_REF_TABLE_SIZE), 00228 object_ref_table_ (), 00229 object_key_table_ (), 00230 orbid_ (ACE_OS::strdup (orbid ? orbid : "")), 00231 resource_factory_ (0), 00232 client_factory_ (0), 00233 server_factory_ (0), 00234 opt_for_collocation_ (1), 00235 use_global_collocation_ (1), 00236 collocation_strategy_ (THRU_POA), 00237 00238 #if (TAO_HAS_CORBA_MESSAGING == 1) 00239 00240 policy_manager_ (0), 00241 default_policies_ (0), 00242 policy_current_ (0), 00243 00244 #endif /* TAO_HAS_CORBA_MESSAGING == 1 */ 00245 00246 poa_current_ (), 00247 adapter_registry_ (this), 00248 poa_adapter_ (0), 00249 tm_ (), 00250 tss_cleanup_funcs_ (), 00251 tss_resources_ (), 00252 has_shutdown_ (1), // Start the ORB in a "shutdown" state. Only 00253 // after CORBA::ORB_init() is called will the 00254 // ORB no longer be shutdown. This does not 00255 // mean that the ORB can be reinitialized. It 00256 // can only be initialized once. 00257 thread_per_connection_use_timeout_ (1), 00258 open_lock_ (), 00259 endpoint_selector_factory_ (0), 00260 #if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1) 00261 eager_transport_queueing_strategy_ (0), 00262 delayed_transport_queueing_strategy_ (0), 00263 flush_transport_queueing_strategy_ (0), 00264 #endif /* TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1 */ 00265 default_transport_queueing_strategy_ (0), 00266 refcount_ (1), 00267 policy_factory_registry_ (0), 00268 orbinitializer_registry_ (0), 00269 #if (TAO_HAS_INTERCEPTORS == 1) 00270 pi_current_ (CORBA::Object::_nil ()), 00271 client_request_interceptor_adapter_ (0), 00272 server_request_interceptor_adapter_ (0), 00273 #endif /* TAO_HAS_INTERCEPTORS == 1 */ 00274 ior_interceptor_adapter_ (0), 00275 valuetype_adapter_ (0), 00276 parser_registry_ (), 00277 bidir_adapter_ (0), 00278 bidir_giop_policy_ (0), 00279 flushing_strategy_ (0), 00280 codeset_manager_ (0) 00281 { 00282 #if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1) 00283 00284 ACE_NEW (this->eager_transport_queueing_strategy_, 00285 TAO::Eager_Transport_Queueing_Strategy); 00286 00287 ACE_NEW (this->delayed_transport_queueing_strategy_, 00288 TAO::Delayed_Transport_Queueing_Strategy); 00289 00290 ACE_NEW (this->flush_transport_queueing_strategy_, 00291 TAO::Flush_Transport_Queueing_Strategy); 00292 00293 #endif /* TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1 */ 00294 00295 #if (TAO_HAS_CORBA_MESSAGING == 1) 00296 00297 ACE_NEW (this->policy_manager_, 00298 TAO_Policy_Manager); 00299 00300 ACE_NEW (this->default_policies_, 00301 TAO_Policy_Set (TAO_POLICY_ORB_SCOPE)); 00302 00303 ACE_NEW (this->policy_current_, 00304 TAO_Policy_Current); 00305 00306 #endif /* TAO_HAS_CORBA_MESSAGING == 1 */ 00307 00308 ACE_NEW (this->default_transport_queueing_strategy_, 00309 TAO::Default_Transport_Queueing_Strategy); 00310 00311 // Initialize the default request dispatcher. 00312 ACE_NEW (this->request_dispatcher_, 00313 TAO_Request_Dispatcher); 00314 00315 // @TODO: Can this be dynamic container instead? 00316 if (ACE_OS::strnlen (this->orbid_, 1) == 0) 00317 { 00318 ACE_NEW (this->config_, 00319 ACE_Service_Gestalt (ACE_Service_Gestalt::MAX_SERVICES, 00320 false)); // (Re)use the process-global repository 00321 } 00322 else 00323 { 00324 ACE_NEW (this->config_, 00325 ACE_Service_Gestalt (ACE_Service_Gestalt::MAX_SERVICES / 4, 00326 true)); // Use our own service repository 00327 } 00328 } |
|
|
Destructor is protected since the ORB Core is a reference counted object. Definition at line 330 of file ORB_Core.cpp. References default_policies_, default_transport_queueing_strategy_, delayed_transport_queueing_strategy_, eager_transport_queueing_strategy_, flush_transport_queueing_strategy_, flushing_strategy_, ACE_OS::free(), orb_, orbinitializer_registry_, policy_current_, policy_factory_registry_, policy_manager_, request_dispatcher_, and thread_lane_resources_manager_.
00331 {
00332 delete this->thread_lane_resources_manager_;
00333
00334 delete this->flushing_strategy_;
00335
00336 ACE_OS::free (this->orbid_);
00337
00338 #if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1)
00339
00340 delete this->eager_transport_queueing_strategy_;
00341 delete this->delayed_transport_queueing_strategy_;
00342 delete this->flush_transport_queueing_strategy_;
00343
00344 #endif /* TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1 */
00345
00346 #if (TAO_HAS_CORBA_MESSAGING == 1)
00347
00348 ::CORBA::release (this->policy_manager_);
00349 delete this->default_policies_;
00350 ::CORBA::release (this->policy_current_);
00351
00352 #endif /* TAO_HAS_CORBA_MESSAGING == 1 */
00353
00354 delete this->default_transport_queueing_strategy_;
00355
00356 delete this->request_dispatcher_;
00357
00358 delete this->policy_factory_registry_;
00359
00360 // Don't delete, is a process wide singleton shared by all orbs
00361 orbinitializer_registry_ = 0;
00362
00363 ::CORBA::release (this->orb_);
00364
00365 delete this->config_;
00366 this->config_ = 0;
00367 }
|
|
|
|
|
|
Definition at line 24 of file ORB_Core.i. References ACE_GUARD_RETURN, fini(), and TAO_SYNCH_MUTEX. Referenced by TAO_ORB_Core_Auto_Ptr::reset(), TAO::ORB_Core_Ref_Counter::~ORB_Core_Ref_Counter(), and TAO_ORB_Core_Auto_Ptr::~TAO_ORB_Core_Auto_Ptr().
00025 {
00026 {
00027 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 0);
00028 --this->refcount_;
00029 if (this->refcount_ != 0)
00030 return this->refcount_;
00031 }
00032
00033 this->fini ();
00034 return 0;
00035 }
|
|
|
Reference counting...
Definition at line 17 of file ORB_Core.i. References ACE_GUARD_RETURN, and TAO_SYNCH_MUTEX. Referenced by TAO::ORB_Table::find(), initialize_object_i(), TAO::Collocated_Invocation::invoke(), and TAO::ORB_Core_Ref_Counter::ORB_Core_Ref_Counter().
00018 {
00019 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, guard, this->lock_, 0);
00020 return this->refcount_++;
00021 }
|
|
|
This is where the tss resources for this ORB are stored.
|
|
|
Get the adapter registry.
Definition at line 192 of file ORB_Core.i. References adapter_registry_. Referenced by create_object(), TAO_Request_Dispatcher::dispatch(), initialize_object_i(), TAO_GIOP_Message_Lite::process_locate_request(), and TAO_GIOP_Message_Lite::process_request().
00193 {
00194 return &this->adapter_registry_;
00195 }
|
|
|
Register an IOR interceptor.
Definition at line 3227 of file ORB_Core.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_ERROR, ACE_TEXT, ACE_THROW, TAO_IORInterceptor_Adapter::add_interceptor(), ior_interceptor_adapter(), ior_interceptor_adapter_, PortableInterceptor::IORInterceptor_ptr, and LM_ERROR.
03230 {
03231 if (this->ior_interceptor_adapter ())
03232 {
03233 this->ior_interceptor_adapter_->add_interceptor (interceptor
03234 ACE_ENV_ARG_PARAMETER);
03235 ACE_CHECK;
03236 }
03237 else
03238 {
03239 ACE_ERROR ((LM_ERROR,
03240 ACE_TEXT ("(%P|%t) %p\n"),
03241 ACE_TEXT ("ERROR: ORB Core unable to find the ")
03242 ACE_TEXT ("IORInterceptor Adapter Factory instance")));
03243
03244 ACE_THROW (CORBA::INTERNAL ());
03245 }
03246 }
|
|
||||||||||||
|
Register a server request interceptor with policies.
Definition at line 3393 of file ORB_Core.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_ERROR, ACE_TEXT, ACE_THROW, TAO::ServerRequestInterceptor_Adapter::add_interceptor(), LM_ERROR, server_request_interceptor_adapter_, serverrequestinterceptor_adapter_i(), and PortableInterceptor::ServerRequestInterceptor_ptr.
03397 {
03398 if (this->serverrequestinterceptor_adapter_i ())
03399 {
03400 this->server_request_interceptor_adapter_->add_interceptor (
03401 interceptor,
03402 policies
03403 ACE_ENV_ARG_PARAMETER);
03404
03405 ACE_CHECK;
03406 }
03407 else
03408 {
03409 ACE_ERROR ((LM_ERROR,
03410 ACE_TEXT ("(%P|%t) %p\n"),
03411 ACE_TEXT ("ERROR: ORB Core unable to find the ")
03412 ACE_TEXT ("Server Request Interceptor Adapter Factory ")
03413 ACE_TEXT ("instance")));
03414
03415 ACE_THROW (CORBA::INTERNAL ());
03416 }
03417 }
|
|
||||||||||||
|
Register a client request interceptor with policies.
Definition at line 3366 of file ORB_Core.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_ERROR, ACE_TEXT, ACE_THROW, TAO::ClientRequestInterceptor_Adapter::add_interceptor(), client_request_interceptor_adapter_, clientrequestinterceptor_adapter_i(), PortableInterceptor::ClientRequestInterceptor_ptr, and LM_ERROR.
03370 {
03371 if (this->clientrequestinterceptor_adapter_i ())
03372 {
03373 this->client_request_interceptor_adapter_->add_interceptor (
03374 interceptor,
03375 policies
03376 ACE_ENV_ARG_PARAMETER);
03377
03378 ACE_CHECK;
03379 }
03380 else
03381 {
03382 ACE_ERROR ((LM_ERROR,
03383 ACE_TEXT ("(%P|%t) %p\n"),
03384 ACE_TEXT ("ERROR: ORB Core unable to find the ")
03385 ACE_TEXT ("Client Request Interceptor Adapter Factory ")
03386 ACE_TEXT ("instance")));
03387
03388 ACE_THROW (CORBA::INTERNAL ());
03389 }
03390 }
|
|
|
Register a server request interceptor.
Definition at line 3343 of file ORB_Core.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_ERROR, ACE_TEXT, ACE_THROW, TAO::ServerRequestInterceptor_Adapter::add_interceptor(), LM_ERROR, server_request_interceptor_adapter_, serverrequestinterceptor_adapter_i(), and PortableInterceptor::ServerRequestInterceptor_ptr.
03346 {
03347 if (this->serverrequestinterceptor_adapter_i ())
03348 {
03349 this->server_request_interceptor_adapter_->add_interceptor (interceptor
03350 ACE_ENV_ARG_PARAMETER);
03351 ACE_CHECK;
03352 }
03353 else
03354 {
03355 ACE_ERROR ((LM_ERROR,
03356 ACE_TEXT ("(%P|%t) %p\n"),
03357 ACE_TEXT ("ERROR: ORB Core unable to find the ")
03358 ACE_TEXT ("Server Request Interceptor Adapter Factory ")
03359 ACE_TEXT ("instance")));
03360
03361 ACE_THROW (CORBA::INTERNAL ());
03362 }
03363 }
|
|
|
Register a client request interceptor.
Definition at line 3292 of file ORB_Core.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_ERROR, ACE_TEXT, ACE_THROW, TAO::ClientRequestInterceptor_Adapter::add_interceptor(), client_request_interceptor_adapter_, clientrequestinterceptor_adapter_i(), PortableInterceptor::ClientRequestInterceptor_ptr, and LM_ERROR.
03295 {
03296 if (this->clientrequestinterceptor_adapter_i ())
03297 {
03298 this->client_request_interceptor_adapter_->add_interceptor (interceptor
03299 ACE_ENV_ARG_PARAMETER);
03300 ACE_CHECK;
03301 }
03302 else
03303 {
03304 ACE_ERROR ((LM_ERROR,
03305 ACE_TEXT ("(%P|%t) %p\n"),
03306 ACE_TEXT ("ERROR: ORB Core unable to find the ")
03307 ACE_TEXT ("Client Request Interceptor Adapter Factory ")
03308 ACE_TEXT ("instance")));
03309
03310 ACE_THROW (CORBA::INTERNAL ());
03311 }
03312 }
|
|
||||||||||||
|
Register a TSS cleanup function. The slot ID for the corresponding ORB core TSS resource is returned by the reference argument. This method return 0 on success, and -1 on failure. Definition at line 2993 of file ORB_Core.cpp. References TAO_Cleanup_Func_Registry::register_cleanup_function(), and tss_cleanup_funcs_.
02995 {
02996 return this->tss_cleanup_funcs_.register_cleanup_function (cleanup,
02997 slot_id);
02998 }
|
|
|
Definition at line 53 of file ORB_Core.i. References bidir_giop_policy_.
00054 {
00055 this->bidir_giop_policy_ = val;
00056 }
|
|
|
Set and Get methods to indicate whether a BiDir IIOP policy has been set in the POA.
Definition at line 47 of file ORB_Core.i. References bidir_giop_policy_. Referenced by TAO_IIOP_Transport::generate_request_header(), and TAO_GIOP_Message_Generator_Parser_12::parse_request_header().
00048 {
00049 return this->bidir_giop_policy_;
00050 }
|
|
||||||||||||||||
|
Definition at line 2940 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), Sync_Scope_Hook, TAO_ORB_Core_Static_Resources::sync_scope_hook_, and Messaging::SyncScope. Referenced by TAO::Invocation_Adapter::set_response_flags().
02943 {
02944 Sync_Scope_Hook sync_scope_hook =
02945 TAO_ORB_Core_Static_Resources::instance ()->sync_scope_hook_;
02946
02947 if (sync_scope_hook == 0)
02948 {
02949 has_synchronization = false;
02950 return;
02951 }
02952
02953 (*sync_scope_hook) (this, stub, has_synchronization, scope);
02954 }
|
|
||||||||||||||||
|
Invoke the timeout hook if present. The timeout hook is used to determine if the timeout policy is set and with what value. If the ORB is compiled without support for Messaging this feature does not take effect
Definition at line 3001 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), Timeout_Hook, and TAO_ORB_Core_Static_Resources::timeout_hook_. Referenced by TAO::LocateRequest_Invocation_Adapter::get_timeout(), and TAO::Invocation_Adapter::get_timeout().
03004 {
03005 Timeout_Hook timeout_hook =
03006 TAO_ORB_Core_Static_Resources::instance ()->timeout_hook_;
03007
03008 if (timeout_hook == 0)
03009 {
03010 has_timeout = false;
03011 return;
03012 }
03013 (*timeout_hook) (this, stub, has_timeout, time_value);
03014 }
|
|
|
Check if ORB has shutdown. If it has, throw an exception.
Definition at line 2352 of file ORB_Core.cpp. References ACE_THROW, and has_shutdown(). Referenced by CORBA::ORB::check_shutdown().
02353 {
02354 if (this->has_shutdown ())
02355 {
02356 // As defined by the CORBA 2.3 specification, throw a
02357 // CORBA::BAD_INV_ORDER exception with minor code 4 if the ORB
02358 // has shutdown by the time an ORB function is called.
02359
02360 ACE_THROW (CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 4,
02361 CORBA::COMPLETED_NO));
02362 }
02363 }
|
|
|
Returns pointer to the client factory.
Definition at line 1783 of file ORB_Core.cpp. References ACE_TEXT, client_factory_, and configuration(). Referenced by TAO_Connector::create_connect_strategy(), TAO::Transport_Cache_Manager::find_transport(), TAO_Fault_Tolerance_Service::init(), TAO_Muxed_TMS::TAO_Muxed_TMS(), TAO_Profile::TAO_Profile(), TAO_Transport::TAO_Transport(), TAO::Profile_Transport_Resolver::use_parallel_connect(), and TAO_Wait_On_Read::wait().
01784 {
01785 if (this->client_factory_ == 0)
01786 {
01787 // Look in the service repository for an instance.
01788 this->client_factory_ =
01789 ACE_Dynamic_Service<TAO_Client_Strategy_Factory>::instance
01790 (this->configuration (),
01791 ACE_TEXT ("Client_Strategy_Factory"));
01792 }
01793
01794 return this->client_factory_;
01795 }
|
|
|
Get the Client Request Interceptor adapter. Will not create a new one if not available yet. Definition at line 621 of file ORB_Core.i. References client_request_interceptor_adapter_.
00622 {
00623 return this->client_request_interceptor_adapter_;
00624 }
|
|
|
Get the Client Request Interceptor adapter. If not created, this method will try to create one if needed. Definition at line 3315 of file ORB_Core.cpp. References ACE_GUARD_RETURN, ACE_TEXT, client_request_interceptor_adapter_, configuration(), TAO_ClientRequestInterceptor_Adapter_Factory::create(), and TAO_SYNCH_MUTEX. Referenced by add_interceptor().
03316 {
03317 if (this->client_request_interceptor_adapter_ == 0)
03318 {
03319 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
03320 ace_mon,
03321 this->lock_,
03322 0);
03323
03324 if (this->client_request_interceptor_adapter_ == 0)
03325 {
03326 TAO_ClientRequestInterceptor_Adapter_Factory *factory =
03327 ACE_Dynamic_Service<TAO_ClientRequestInterceptor_Adapter_Factory>::instance
03328 (this->configuration (),
03329 ACE_TEXT ("ClientRequestInterceptor_Adapter_Factory"));
03330
03331 if (factory)
03332 {
03333 this->client_request_interceptor_adapter_ =
03334 factory->create ();
03335 }
03336 }
03337 }
03338
03339 return this->client_request_interceptor_adapter_;
03340 }
|
|
|
Get Code Set Manager.
Definition at line 440 of file ORB_Core.i. References TAO_Resource_Factory::codeset_manager(), TAO_ORB_Parameters::negotiate_codesets(), orb_params(), and resource_factory(). Referenced by TAO_IIOP_Acceptor::create_new_profile(), TAO_IIOP_Acceptor::create_shared_profile(), TAO_Transport::generate_request_header(), TAO_GIOP_Message_Lite::process_request(), and TAO_GIOP_Message_Base::process_request().
00441 {
00442 if (this->orb_params()->negotiate_codesets() == 0)
00443 return 0;
00444 if (this->codeset_manager_ == 0)
00445 {
00446 // This causes a factory to be loaded which will call
00447 // the codeset_manager setter in this thread.
00448 this->codeset_manager_ =
00449 this->resource_factory()->codeset_manager();
00450 if (this->codeset_manager_ == 0)
00451 this->orb_params()->negotiate_codesets(false);
00452 }
00453 return this->codeset_manager_;
00454 }
|
|
|
Returns a pointer to the Collocation Resolver.
Definition at line 1568 of file ORB_Core.cpp. References ACE_CString, ACE_TEXT_CHAR_TO_TCHAR, collocation_resolver_, TAO_ORB_Core_Static_Resources::collocation_resolver_name_, configuration(), and TAO_ORB_Core_Static_Resources::instance(). Referenced by collocation_strategy().
01569 {
01570 // Check if there is a cached reference.
01571 if (this->collocation_resolver_ != 0)
01572 return *this->collocation_resolver_;
01573
01574 // If not, lookup it up.
01575 const ACE_CString &collocation_resolver_name =
01576 TAO_ORB_Core_Static_Resources::instance ()->collocation_resolver_name_;
01577
01578 this->collocation_resolver_ =
01579 ACE_Dynamic_Service<TAO_Collocation_Resolver>::instance
01580 (this->configuration (),
01581 ACE_TEXT_CHAR_TO_TCHAR (collocation_resolver_name.c_str()));
01582
01583 return *this->collocation_resolver_;
01584 }
|
|
|
This method returns the right collocation strategy, if any, to be used to perform a method invocation on the given object.
Definition at line 3540 of file ORB_Core.cpp. References ACE_ASSERT, ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, collocation_resolver(), DIRECT, TAO_Pseudo_Var_T< T >::in(), TAO_Collocation_Resolver::is_collocated(), CORBA::is_nil(), CORBA::Object_ptr, and TAO_Stub::servant_orb_var(). Referenced by TAO::Invocation_Adapter::invoke_i().
03542 {
03543 TAO_Stub *stub = object->_stubobj ();
03544 if (!CORBA::is_nil (stub->servant_orb_var ().in ()) &&
03545 stub->servant_orb_var ()->orb_core () != 0)
03546 {
03547 TAO_ORB_Core *orb_core =
03548 stub->servant_orb_var ()->orb_core ();
03549
03550 const int collocated =
03551 orb_core->collocation_resolver ().is_collocated (object
03552 ACE_ENV_ARG_PARAMETER);
03553 ACE_CHECK_RETURN (TAO::TAO_CS_REMOTE_STRATEGY);
03554
03555 if (collocated)
03556 {
03557 switch (stub->servant_orb_var ()->orb_core ()->get_collocation_strategy ())
03558 {
03559 case THRU_POA:
03560 return TAO::TAO_CS_THRU_POA_STRATEGY;
03561
03562 case DIRECT:
03563 {
03564 /////////////////////////////////////////////////////////////
03565 // If the servant is null and you are collocated this means
03566 // that the POA policy NON-RETAIN is set, and with that policy
03567 // using the DIRECT collocation strategy is just insane.
03568 /////////////////////////////////////////////////////////////
03569 ACE_ASSERT (object->_servant () != 0);
03570 return TAO::TAO_CS_DIRECT_STRATEGY;
03571 }
03572 }
03573 }
03574 }
03575
03576 // In this case the Object is a client.
03577 return TAO::TAO_CS_REMOTE_STRATEGY;
03578 }
|
|
|
Configuration accessor method.
Definition at line 11 of file ORB_Core.i. Referenced by client_factory(), clientrequestinterceptor_adapter_i(), collocation_resolver(), endpoint_selector_factory(), ior_interceptor_adapter(), load_policy_validators(), TAO_Parser_Registry::open(), orbinitializer_registry_i(), TAO_DLL_Parser::parse_string(), policy_factory_registry_i(), resolve_codecfactory_i(), resolve_dynanyfactory_i(), resolve_ior_table_i(), resolve_iormanipulation_i(), resolve_picurrent_i(), resolve_poa_current_i(), resolve_typecodefactory_i(), resource_factory(), root_poa(), server_factory(), serverrequestinterceptor_adapter_i(), stub_factory(), and thread_lane_resources_manager().
00012 {
00013 return this->config_;
00014 }
|
|
||||||||||||||||
|
Invoke the timeout hook if present. The timeout hook is used to determine if the timeout policy is set and with what value. If the ORB is compiled without support for Messaging this feature does not take effect
Definition at line 3024 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::alt_connection_timeout_hook_, connection_timeout_hook(), TAO_ORB_Core_Static_Resources::connection_timeout_hook_, TAO_ORB_Core_Static_Resources::instance(), and Timeout_Hook. Referenced by TAO::Profile_Transport_Resolver::get_connection_timeout().
03027 {
03028 Timeout_Hook connection_timeout_hook =
03029 TAO_ORB_Core_Static_Resources::instance ()->connection_timeout_hook_;
03030
03031 if (connection_timeout_hook == 0)
03032 {
03033 has_timeout = false;
03034 return;
03035 }
03036
03037 (*connection_timeout_hook) (this, stub, has_timeout, time_value);
03038
03039 Timeout_Hook alt_connection_timeout_hook =
03040 TAO_ORB_Core_Static_Resources::instance ()->alt_connection_timeout_hook_;
03041
03042 if (alt_connection_timeout_hook == 0)
03043 return;
03044
03045 if (!has_timeout || time_value == ACE_Time_Value::zero )
03046 {
03047 (*alt_connection_timeout_hook) (this, stub, has_timeout,time_value);
03048 return;
03049 }
03050
03051 // At this point, both the primary and alternate hooks are defined, and
03052 // the primary did indeed set a value
03053 ACE_Time_Value tv1;
03054 bool ht1;
03055 (*alt_connection_timeout_hook) (this, stub, ht1,tv1);
03056 if (ht1 && tv1 > ACE_Time_Value::zero && tv1 < time_value)
03057 time_value = tv1;
03058 }
|
|
|
Define the Timeout_Hook signature. The connection timeout hook was originally defined to allow the TAO Messaging code to be factored out of the core TAO library and placed in to an optional library. Since then, a new invocation endpoint selector, the optimised connection endpoint selector (see Strategies/OC_Endpoint_Selector.h) reused this connection timeout hook. However, this set up a problem when both the Messaging library and OCES are being used in the same application. The solution was to add a new connection timeout hook attribute (see alt_connection_timeout_hook_ below). This method now checks to see if the connection timeout hook is already set, and if so assigns the supplied hook value to the alternate connection timeout hook. This functionality has a side-effect of assuming that hooks are NEVER unloaded or actively replaced. IOW, no one will call this method with a 0 or some other pointer value to replace an existing hook. If such functionality as unloading a hook pointer is required, then this method must be extended to give some kind of identity for the hook. Additional changes to the definition of the hook will also be necessary to support such identity and manipulation. Definition at line 3061 of file ORB_Core.cpp. References ACE_DEBUG, ACE_TEXT, LM_DEBUG, TAO_debug_level, Timeout_Hook, and TOCSRi. Referenced by connection_timeout().
03062 {
03063 // Saving the hook pointer so that we can use it later when needed.
03064 // For now there are only two entry points that may supply a connection
03065 // timeout hook. But there might be future entry points, so this should
03066 // probably be addressed by a more sophisticated mechanism.
03067
03068 #define TOCSRi TAO_ORB_Core_Static_Resources::instance ()
03069
03070 // A consern was raised that since this function is called by two
03071 // different initializers there may be a race condition that might
03072 // require a lock. We are not using a lock at this time because of
03073 // two callers, one happens only during service directive processing
03074 // and the other only during ORB Initialization time. The former
03075 // happens when the OC_Endpoint_Selector_Factory is loaded, the
03076 // latter is part of the messaging library. The messaging library
03077 // calls this function as part of pre_init processing, and this call
03078 // happes for every ORB instance. This was the case before these The
03079 // latter call occurs when the messaging library is loaded. The
03080 // redundant calls occured then as well. Second, it isn't clear how
03081 // a lock in this static method would react in the face of windows
03082 // dlls, shared memory segments, etc. Therefore we are continuing to
03083 // keep this code lockless as it always was, assuming no
03084 // simultanious overwrite will occur.
03085
03086 if (TOCSRi->connection_timeout_hook_ == 0)
03087 {
03088 if (TAO_debug_level > 2)
03089 ACE_DEBUG ((LM_DEBUG,
03090 ACE_TEXT("TAO (%P|%t) setting primary hook\n")));
03091 TOCSRi->connection_timeout_hook_ = hook;
03092 }
03093 else if (TOCSRi->connection_timeout_hook_ != hook &&
03094 TOCSRi->alt_connection_timeout_hook_ == 0)
03095 {
03096 if (TAO_debug_level > 2)
03097 ACE_DEBUG ((LM_DEBUG,
03098 ACE_TEXT("TAO (%P|%t) setting alternate hook\n")));
03099 TOCSRi->alt_connection_timeout_hook_ = hook;
03100 }
03101 else
03102 if (TAO_debug_level > 2)
03103 ACE_DEBUG ((LM_DEBUG,
03104 ACE_TEXT ("TAO (%P|%t) not overwriting alternate hook.")
03105 ACE_TEXT (" Is it still null? %d\n"),
03106 TOCSRi->alt_connection_timeout_hook_ == 0));
03107
03108 #undef TOCSRi
03109 }
|
|
|
Get the connector registry.
Definition at line 2883 of file ORB_Core.cpp. References ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, TAO_Thread_Lane_Resources::connector_registry(), and lane_resources(). Referenced by operator>>(), resolve_rir(), CORBA::Object::tao_object_initialize(), TAO::Profile_Transport_Resolver::try_connect_i(), and CORBA::ORB::url_ior_string_to_object().
02884 {
02885 TAO_Connector_Registry *conn =
02886 this->lane_resources ().connector_registry (ACE_ENV_SINGLE_ARG_PARAMETER);
02887 ACE_CHECK_RETURN (0);
02888
02889 return conn;
02890 }
|
|
||||||||||||||||||||
|
Routine that creates a ACE_Data_Block given the lock and allocators.
Definition at line 2859 of file ORB_Core.cpp. References ACE_Data_Block, ACE_NEW_MALLOC_RETURN, and ACE_Allocator::malloc(). Referenced by create_input_cdr_data_block().
02863 {
02864 ACE_Data_Block *nb = 0;
02865
02866 ACE_NEW_MALLOC_RETURN (
02867 nb,
02868 static_cast<ACE_Data_Block*> (
02869 dblock_allocator->malloc (sizeof (ACE_Data_Block))),
02870 ACE_Data_Block (size,
02871 ACE_Message_Block::MB_DATA,
02872 0,
02873 buffer_allocator,
02874 lock_strategy,
02875 0,
02876 dblock_allocator),
02877 0);
02878
02879 return nb;
02880 }
|
|
|
The Message Blocks used for input CDRs must have appropiate locking strategies. Definition at line 2835 of file ORB_Core.cpp. References create_data_block_i(), data_block_lock_, input_cdr_buffer_allocator(), input_cdr_dblock_allocator(), resource_factory(), and TAO_Resource_Factory::use_locked_data_blocks(). Referenced by TAO_GIOP_Message_Lite::make_queued_data(), and TAO_GIOP_Message_Base::make_queued_data().
02836 {
02837
02838 ACE_Allocator *dblock_allocator = 0;
02839 ACE_Allocator *buffer_allocator = 0;
02840
02841 dblock_allocator =
02842 this->input_cdr_dblock_allocator ();
02843 buffer_allocator =
02844 this->input_cdr_buffer_allocator ();
02845
02846 ACE_Lock* lock_strategy = 0;
02847 if (this->resource_factory ()->use_locked_data_blocks ())
02848 {
02849 lock_strategy = &this->data_block_lock_;
02850 }
02851
02852 return this->create_data_block_i (size,
02853 buffer_allocator,
02854 dblock_allocator,
02855 lock_strategy);
02856 }
|
|
|
Create a new object, use the adapter registry to create a collocated object, if not possible then create a regular object. Definition at line 1969 of file ORB_Core.cpp. References ACE_GUARD_RETURN, ACE_NEW_RETURN, adapter_registry(), TAO_Stub::base_profiles(), TAO::ORB_Table::begin(), TAO_Adapter_Registry::create_collocated_object(), TAO::ORB_Table::end(), TAO_ORB_Core_Auto_Ptr::get(), TAO::ORB_Table::instance(), is_collocation_enabled(), CORBA::Object_ptr, and TAO_SYNCH_MUTEX. Referenced by operator>>(), and CORBA::ORB::url_ior_string_to_object().
01970 {
01971 // @@ What about forwarding. With this approach we are never forwarded
01972 // when we use collocation!
01973 const TAO_MProfile &mprofile = stub->base_profiles ();
01974
01975 // @@ We should thow CORBA::NO_MEMORY in platforms with exceptions,
01976 // but we are stuck in platforms without exceptions!
01977 TAO_ORB_Core_Auto_Ptr collocated_orb_core;
01978 CORBA::Object_ptr x = 0;
01979
01980 {
01981 // Lock the ORB_Table against concurrent modification while we
01982 // iterate through the ORBs.
01983 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
01984 guard,
01985 TAO::ORB_Table::instance()->lock_,
01986 CORBA::Object::_nil ());
01987
01988 TAO::ORB_Table * const table = TAO::ORB_Table::instance ();
01989 TAO::ORB_Table::iterator const end = table->end ();
01990 for (TAO::ORB_Table::iterator i = table->begin (); i != end; ++i)
01991 {
01992 ::TAO_ORB_Core * const other_core = (*i).second.core ();
01993
01994 if (this->is_collocation_enabled (other_core,
01995 mprofile))
01996 {
01997 other_core->_incr_refcnt();
01998 TAO_ORB_Core_Auto_Ptr tmp_auto_ptr (other_core);
01999 collocated_orb_core = tmp_auto_ptr;
02000 break;
02001 }
02002 }
02003 }
02004
02005 if (collocated_orb_core.get ())
02006 {
02007 TAO_Adapter_Registry *ar =
02008 collocated_orb_core.get ()->adapter_registry ();
02009
02010 x = ar->create_collocated_object (stub,
02011 mprofile);
02012 }
02013
02014
02015 if (!x)
02016 {
02017 // The constructor sets the proxy broker as the
02018 // Remote one.
02019 ACE_NEW_RETURN (x,
02020 CORBA::Object (stub, 0),
02021 0);
02022 }
02023
02024 return x;
02025 }
|
|
||||||||||||
|
Factory method that create the "right" Stub depending on wheather RTCORBA is loaded or not. The factory used to create the stub, is loaded at ORB initialization, and its type depends on the fact that RTCORBA is being used or not. Definition at line 1892 of file ORB_Core.cpp. References ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, TAO_Stub_Factory::create_stub(), and stub_factory(). Referenced by create_stub_object(), operator>>(), CORBA::Object::tao_object_initialize(), and CORBA::ORB::url_ior_string_to_object().
01895 {
01896 TAO_Stub *retval =
01897 this->stub_factory ()->create_stub (repository_id,
01898 profiles,
01899 this
01900 ACE_ENV_ARG_PARAMETER);
01901 ACE_CHECK_RETURN(0);
01902 return retval;
01903 }
|
|
||||||||||||||||
|
Makes sure that the ORB is open and then creates a TAO_Stub based on the endpoint. Definition at line 1915 of file ORB_Core.cpp. References ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, TAO_Stub::base_profiles(), create_stub(), TAO_MProfile::get_profile(), TAO_Profile::policies(), TAO_MProfile::policy_list(), and TAO_MProfile::profile_count().
01919 {
01920 // Add the Polices contained in "policy_list" to each profile so
01921 // that those policies will be exposed to the client in the IOR. In
01922 // particular each CORBA::Policy has to be converted in to
01923 // Messaging::PolicyValue, and then all the Messaging::PolicyValue
01924 // should be embedded inside a Messaging::PolicyValueSeq which
01925 // became in turns the "body" of the IOP::TaggedComponent. This
01926 // conversion is a responsability of the CORBA::Profile class. (See
01927 // orbos\98-05-05.pdf Section 5.4)
01928 if (policy_list->length () != 0)
01929 {
01930 TAO_Profile * profile;
01931
01932 const CORBA::ULong count = mprofile.profile_count ();
01933 for (CORBA::ULong i = 0; i < count; ++i)
01934 {
01935 // Get the ith profile
01936 profile = mprofile.get_profile (i);
01937 profile->policies (policy_list ACE_ENV_ARG_PARAMETER);
01938 ACE_CHECK_RETURN (0);
01939 }
01940 }
01941
01942 /// Initialize a TAO_Stub object with the mprofile thats passed.
01943 TAO_Stub *stub =
01944 this->create_stub (type_id, mprofile ACE_ENV_ARG_PARAMETER);
01945 ACE_CHECK_RETURN (stub);
01946
01947 stub->base_profiles ().policy_list (policy_list);
01948
01949 return stub;
01950 }
|
|
|
The thread has a default environment to simplify porting between platforms that support native C++ exceptions and those that don't. This is a TSS resource (always), but with a twist: if the user creates a new environment the old one is "pushed" (actually the new one remembers it), eventually the new environment destructor pops itself from the stack and we recover the old environment.
Definition at line 3221 of file ORB_Core.cpp. References TAO_TSS_Resources::default_environment_, and TAO_TSS_Resources::instance().
03222 {
03223 TAO_TSS_Resources::instance ()->default_environment_ = env;
03224 }
|
|
|
The thread has a default environment to simplify porting between platforms that support native C++ exceptions and those that don't. This is a TSS resource (always), but with a twist: if the user creates a new environment the old one is "pushed" (actually the new one remembers it), eventually the new environment destructor pops itself from the stack and we recover the old environment.
Definition at line 3215 of file ORB_Core.cpp. References TAO_TSS_Resources::default_environment_, and TAO_TSS_Resources::instance(). Referenced by CORBA::Environment::default_environment(), CORBA::Environment::Environment(), and CORBA::Environment::~Environment().
03216 {
03217 return TAO_TSS_Resources::instance ()->default_environment_;
03218 }
|
|
|
This strategy is the default, no explicit queueing and no explicit flush Definition at line 544 of file ORB_Core.i. References default_transport_queueing_strategy_. Referenced by get_transport_queueing_strategy().
00545 {
00546 return *this->default_transport_queueing_strategy_;
00547 }
|
|
|
Definition at line 530 of file ORB_Core.i. References delayed_transport_queueing_strategy_. Referenced by get_transport_queueing_strategy().
00531 {
00532 return *this->delayed_transport_queueing_strategy_;
00533 }
|
|
|
Shutdown the ORB and free resources.
Definition at line 2322 of file ORB_Core.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_ENV_SINGLE_ARG_PARAMETER, destroy_interceptors(), TAO::ORB_Table::instance(), and shutdown(). Referenced by CORBA::ORB::destroy().
02323 {
02324 //
02325 // All destroy() should do is (a) call shutdown() and (b) unbind()
02326 // from the ORB table. Nothing else should really be added to this
02327 // method. Everything else should go to the shutdown() method.
02328 // Remember when the ORB Core is finally removed from the ORB table,
02329 // the reference count goes to zero and fini() is called. fini()
02330 // calls shutdown() and does not call destroy() since destroy() will
02331 // try to unbind from the ORB table again. Additional code should
02332 // not be added to destroy() since there is no guarantee that
02333 // orb->destroy() will ever be called by the user. Since TAO
02334 // guarantees that shutdown() will be called, all cleanup code
02335 // should go there.
02336 //
02337
02338 // Shutdown the ORB and block until the shutdown is complete.
02339 this->shutdown (1 ACE_ENV_ARG_PARAMETER);
02340 ACE_CHECK;
02341
02342 // Invoke Interceptor::destroy() on all registered interceptors.
02343 this->destroy_interceptors (ACE_ENV_SINGLE_ARG_PARAMETER);
02344 ACE_CHECK;
02345
02346 // Now remove it from the ORB table so that it's ORBid may be
02347 // reused.
02348 TAO::ORB_Table::instance ()->unbind (this->orbid_);
02349 }
|
|
|
Helper method that invokes Interceptor::destroy() on all registered interceptors when ORB::destroy() is called. Prevents exceptions from propagating up the call chain. Definition at line 2366 of file ORB_Core.cpp. References ACE_CATCHALL, ACE_DEBUG, ACE_ENDTRY, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD, ACE_TEXT, ACE_TRY, ACE_TRY_CHECK, client_request_interceptor_adapter_, TAO_IORInterceptor_Adapter::destroy_interceptors(), TAO::ServerRequestInterceptor_Adapter::destroy_interceptors(), TAO::ClientRequestInterceptor_Adapter::destroy_interceptors(), ior_interceptor_adapter_, LM_DEBUG, server_request_interceptor_adapter_, TAO_debug_level, and TAO_SYNCH_MUTEX. Referenced by destroy().
02367 {
02368 ACE_TRY
02369 {
02370 ACE_GUARD (TAO_SYNCH_MUTEX, monitor, this->lock_);
02371
02372 #if TAO_HAS_INTERCEPTORS == 1
02373 if (this->client_request_interceptor_adapter_ != 0)
02374 {
02375 this->client_request_interceptor_adapter_->destroy_interceptors (
02376 ACE_ENV_SINGLE_ARG_PARAMETER);
02377 ACE_TRY_CHECK;
02378
02379 delete this->client_request_interceptor_adapter_;
02380 this->client_request_interceptor_adapter_ = 0;
02381 }
02382
02383 if (this->server_request_interceptor_adapter_ != 0)
02384 {
02385 this->server_request_interceptor_adapter_->destroy_interceptors (
02386 ACE_ENV_SINGLE_ARG_PARAMETER);
02387 ACE_TRY_CHECK;
02388
02389 delete this->server_request_interceptor_adapter_;
02390 this->server_request_interceptor_adapter_ = 0;
02391 }
02392
02393 #endif /* TAO_HAS_INTERCEPTORS == 1 */
02394
02395 if (this->ior_interceptor_adapter_ != 0)
02396 {
02397 this->ior_interceptor_adapter_->destroy_interceptors (
02398 ACE_ENV_SINGLE_ARG_PARAMETER);
02399 ACE_TRY_CHECK;
02400
02401 this->ior_interceptor_adapter_ = 0;
02402 }
02403
02404 }
02405 ACE_CATCHALL
02406 {
02407 // .. catch all the exceptions..
02408 if (TAO_debug_level > 3)
02409 {
02410 ACE_DEBUG ((LM_DEBUG,
02411 ACE_TEXT ("TAO (%P|%t) - Exception in TAO_ORB_Core")
02412 ACE_TEXT ("::destroy_interceptors () \n")));
02413 }
02414 }
02415 ACE_ENDTRY;
02416
02417 return;
02418 }
|
|
|
Gets the value of TAO_ORB_Core::dynamic_adapter_name_.
Definition at line 1464 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::dynamic_adapter_name_, and TAO_ORB_Core_Static_Resources::instance().
01465 {
01466 return TAO_ORB_Core_Static_Resources::instance ()->dynamic_adapter_name_.c_str();
01467 }
|
|
|
Sets the value of TAO_ORB_Core::dynamic_adapter_name_.
Definition at line 1458 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::dynamic_adapter_name_, and TAO_ORB_Core_Static_Resources::instance().
01459 {
01460 TAO_ORB_Core_Static_Resources::instance ()->dynamic_adapter_name_ = name;
01461 }
|
|
|
Definition at line 524 of file ORB_Core.i. References eager_transport_queueing_strategy_. Referenced by get_transport_queueing_strategy().
00525 {
00526 return *this->eager_transport_queueing_strategy_;
00527 }
|
|
|
Returns a pointer to the endpoint selector factory.
Definition at line 1690 of file ORB_Core.cpp. References ACE_CString, ACE_TEXT_CHAR_TO_TCHAR, configuration(), endpoint_selector_factory_, TAO_ORB_Core_Static_Resources::endpoint_selector_factory_name_, and TAO_ORB_Core_Static_Resources::instance().
01691 {
01692 // Check if there is a cached reference.
01693 if (this->endpoint_selector_factory_ != 0)
01694 return this->endpoint_selector_factory_;
01695
01696 // If not, look in the service repository for an instance.
01697 const ACE_CString &endpoint_selector_factory_name =
01698 TAO_ORB_Core_Static_Resources::instance ()->endpoint_selector_factory_name_;
01699
01700 this->endpoint_selector_factory_ =
01701 ACE_Dynamic_Service<TAO_Endpoint_Selector_Factory>::instance
01702 (this->configuration (),
01703 ACE_TEXT_CHAR_TO_TCHAR (endpoint_selector_factory_name.c_str()));
01704
01705 return this->endpoint_selector_factory_;
01706 }
|
|
|
Return a reference to the Fault Tolerant service object.
Definition at line 174 of file ORB_Core.i. References ft_service_. Referenced by CORBA::ORB::_tao_ft_client_id().
00175 {
00176 return this->ft_service_;
00177 }
|
|
|
Final termination hook, typically called by CORBA::ORB's destructor. Definition at line 1348 of file ORB_Core.cpp. References ACE_ANY_EXCEPTION, ACE_CATCHANY, ACE_CString, ACE_DEBUG, ACE_ENDTRY, ACE_ENV_ARG_PARAMETER, ACE_PRINT_EXCEPTION, ACE_TEXT, ACE_TEXT_CHAR_TO_TCHAR, ACE_TRY_CHECK, ACE_TRY_NEW_ENV, TAO::ORB::close_services(), codec_factory_, TAO::ObjectKey_Table::destroy(), dynany_factory_, TAO_Thread_Lane_Resources_Manager::finalize(), implrepo_service_, ior_manip_factory_, ior_table_, LM_DEBUG, object_key_table_, orbid_, shutdown(), TAO_debug_level, thr_mgr(), thread_lane_resources_manager_, typecode_factory_, and ACE_Thread_Manager::wait(). Referenced by _decr_refcnt().
01349 {
01350 ACE_TRY_NEW_ENV
01351 {
01352 // Shutdown the ORB and block until the shutdown is complete.
01353 this->shutdown (1
01354 ACE_ENV_ARG_PARAMETER);
01355 ACE_TRY_CHECK;
01356 }
01357 ACE_CATCHANY
01358 {
01359 ACE_CString message =
01360 "Exception caught in trying to shutdown ";
01361 message += this->orbid_;
01362 message += "\n";
01363
01364 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
01365 message.c_str ());
01366 }
01367 ACE_ENDTRY;
01368
01369 // Wait for any server threads, ignoring any failures.
01370 (void) this->thr_mgr ()->wait ();
01371
01372 ::CORBA::release (this->implrepo_service_);
01373
01374 ::CORBA::release (this->typecode_factory_);
01375
01376 ::CORBA::release (this->codec_factory_);
01377
01378 ::CORBA::release (this->dynany_factory_);
01379
01380 ::CORBA::release (this->ior_manip_factory_);
01381
01382 ::CORBA::release (this->ior_table_);
01383
01384 if (TAO_debug_level > 2)
01385 {
01386 ACE_DEBUG ((LM_DEBUG,
01387 ACE_TEXT ("Destroying ORB <%s>\n"),
01388 ACE_TEXT_CHAR_TO_TCHAR (this->orbid_)));
01389 }
01390
01391 // Finalize lane resources.
01392 //
01393 // @@ Do not call this->thread_lane_resources_manager().finalize().
01394 // this->thread_lane_manager_resources() can seg fault if the
01395 // factory method it invokes returns a zero pointer, which can
01396 // easily occur if the ORB is partially initialized due to a Service
01397 // Configurator initialization failure. Instead check if the
01398 // cached pointer is non-zero and then finalize.
01399 //
01400 // @todo Fix potential seg fault in
01401 // TAO_ORB_Core::thread_lane_resources_manager().
01402 if (this->thread_lane_resources_manager_ != 0)
01403 this->thread_lane_resources_manager_->finalize ();
01404
01405 (void) TAO::ORB::close_services (this->configuration ());
01406
01407 // Destroy the object_key table
01408 this->object_key_table_.destroy ();
01409
01410 delete this;
01411
01412 return 0;
01413 }
|
|
|
Definition at line 536 of file ORB_Core.i. References flush_transport_queueing_strategy_. Referenced by get_transport_queueing_strategy().
00537 {
00538 return *this->flush_transport_queueing_strategy_;
00539 }
|
|
|
Return the flushing strategy. The flushing strategy is created by the resource factory, and it is used by the ORB to control the mechanism used to flush the outgoing data queues. The flushing strategies are stateless, therefore, there is only one per ORB. Definition at line 71 of file ORB_Core.i. References flushing_strategy_. Referenced by TAO_Transport::drain_queue(), TAO_Transport::handle_timeout(), TAO_Transport::post_open(), TAO_Transport::send_asynchronous_message_i(), TAO_Transport::send_reply_message_i(), and TAO_Transport::send_synchronous_message_i().
00072 {
00073 return this->flushing_strategy_;
00074 }
|
|
|
Get outgoing fragmentation strategy.
Definition at line 2893 of file ORB_Core.cpp. References TAO_Resource_Factory::create_fragmentation_strategy(), and resource_factory().
02894 {
02895 return
02896 this->resource_factory ()->create_fragmentation_strategy (
02897 transport,
02898 this->orb_params_.max_message_size ());
02899 }
|
|
|
Get a cached policy. First, check the ORB-level Policy Manager, then check the ORB defaults. Definition at line 3162 of file ORB_Core.cpp. References TAO_Objref_Var_T< T >::_retn(), ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, TAO_Policy_Set::get_cached_policy(), TAO_Policy_Manager::get_cached_policy(), get_default_policies(), TAO_Objref_Var_T< T >::in(), CORBA::is_nil(), policy_manager(), and CORBA::Policy_var. Referenced by get_cached_policy_including_current().
03164 {
03165 CORBA::Policy_var result;
03166
03167 TAO_Policy_Manager *policy_manager =
03168 this->policy_manager ();
03169 if (policy_manager != 0)
03170 {
03171 result =
03172 policy_manager->get_cached_policy (type
03173 ACE_ENV_ARG_PARAMETER);
03174 ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03175 }
03176
03177 if (CORBA::is_nil (result.in ()))
03178 {
03179 result =
03180 this->get_default_policies ()->get_cached_policy (type
03181 ACE_ENV_ARG_PARAMETER);
03182 ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03183 }
03184
03185 return result._retn ();
03186 }
|
|
|
Get a cached policy. First, check the thread current, then check the ORB-level Policy Manager, then check the ORB defaults. Definition at line 3189 of file ORB_Core.cpp. References TAO_Objref_Var_T< T >::_retn(), ACE_CHECK, ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, get_cached_policy(), TAO_Policy_Current::get_cached_policy(), TAO_Objref_Var_T< T >::in(), CORBA::is_nil(), policy_current(), and CORBA::Policy_var.
03192 {
03193 TAO_Policy_Current &policy_current =
03194 this->policy_current ();
03195
03196 CORBA::Policy_var result =
03197 policy_current.get_cached_policy (type
03198 ACE_ENV_ARG_PARAMETER);
03199 ACE_CHECK (CORBA::Policy::_nil ());
03200
03201 if (CORBA::is_nil (result.in ()))
03202 {
03203 result =
03204 this->get_cached_policy (type
03205 ACE_ENV_ARG_PARAMETER);
03206 ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03207 }
03208
03209 return result._retn ();
03210 }
|
|
|
Definition at line 248 of file ORB_Core.i. References collocation_strategy_.
00249 {
00250 return this->collocation_strategy_;
00251 }
|
|
|
Accessor method for the default_policies_.
Definition at line 575 of file ORB_Core.i. References default_policies_. Referenced by get_cached_policy(), and get_policy().
00576 {
00577 return this->default_policies_;
00578 }
|
|
|
Get a policy. First, check the ORB-level Policy Manager, then check the ORB defaults. Definition at line 3114 of file ORB_Core.cpp. References TAO_Objref_Var_T< T >::_retn(), ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, get_default_policies(), TAO_Policy_Set::get_policy(), TAO_Policy_Manager::get_policy(), TAO_Objref_Var_T< T >::in(), CORBA::is_nil(), policy_manager(), CORBA::Policy_var, and CORBA::PolicyType. Referenced by get_policy_including_current().
03116 {
03117 CORBA::Policy_var result;
03118
03119 TAO_Policy_Manager *policy_manager =
03120 this->policy_manager ();
03121 if (policy_manager != 0)
03122 {
03123 result = policy_manager->get_policy (type
03124 ACE_ENV_ARG_PARAMETER);
03125 ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03126 }
03127
03128 if (CORBA::is_nil (result.in ()))
03129 {
03130 result =
03131 this->get_default_policies ()->get_policy (type
03132 ACE_ENV_ARG_PARAMETER);
03133 ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03134 }
03135
03136 return result._retn ();
03137 }
|
|
|
Get a policy. First, check the thread current, then check the ORB-level Policy Manager, then check the ORB defaults. Definition at line 3140 of file ORB_Core.cpp. References TAO_Objref_Var_T< T >::_retn(), ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, get_policy(), TAO_Policy_Current::get_policy(), TAO_Objref_Var_T< T >::in(), CORBA::is_nil(), policy_current(), CORBA::Policy_var, and CORBA::PolicyType.
03142 {
03143 TAO_Policy_Current &policy_current =
03144 this->policy_current ();
03145
03146 CORBA::Policy_var result =
03147 policy_current.get_policy (type
03148 ACE_ENV_ARG_PARAMETER);
03149 ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03150
03151 if (CORBA::is_nil (result.in ()))
03152 {
03153 result = this->get_policy (type
03154 ACE_ENV_ARG_PARAMETER);
03155 ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03156 }
03157
03158 return result._retn ();
03159 }
|
|
|
Gets the value of TAO_ORB_Core::protocols_hooks__.
Definition at line 77 of file ORB_Core.i. References protocols_hooks_. Referenced by TAO_IIOP_Connection_Handler::open(), TAO::Remote_Invocation::send_message(), and TAO_IIOP_Connection_Handler::set_dscp_codepoint().
00078 {
00079 return this->protocols_hooks_;
00080 }
|
|
||||||||||||
|
Definition at line 2959 of file ORB_Core.cpp. References default_transport_queueing_strategy(), delayed_transport_queueing_strategy(), eager_transport_queueing_strategy(), flush_transport_queueing_strategy(), and Messaging::SyncScope.
02961 {
02962
02963 if (scope == Messaging::SYNC_WITH_TRANSPORT
02964 || scope == Messaging::SYNC_WITH_SERVER
02965 || scope == Messaging::SYNC_WITH_TARGET)
02966 {
02967 return this->flush_transport_queueing_strategy ();
02968 }
02969
02970 if (scope == Messaging::SYNC_NONE
02971 || scope == TAO::SYNC_EAGER_BUFFERING)
02972 {
02973 return this->eager_transport_queueing_strategy ();
02974 }
02975
02976 if (scope == TAO::SYNC_DELAYED_BUFFERING)
02977 {
02978 return this->delayed_transport_queueing_strategy ();
02979 }
02980
02981 return this->default_transport_queueing_strategy ();
02982 }
|
|
|
Obtain the TSS resource in the given slot.
Definition at line 295 of file ORB_Core.i. References get_tss_resources(), ACE_Array_Base< void * >::size(), and TAO_ORB_Core_TSS_Resources::ts_objects_.
00296 {
00297 TAO_ORB_Core_TSS_Resources *tss_resources =
00298 this->get_tss_resources ();
00299
00300 if (slot_id >= tss_resources->ts_objects_.size ())
00301 return 0;
00302
00303 return tss_resources->ts_objects_[slot_id];
00304 }
|
|
|
Obtain the TSS resources of this orb.
Definition at line 289 of file ORB_Core.i. References ACE_TSS_GET. Referenced by TAO::Wait_On_LF_No_Upcall::can_process_upcalls(), get_tss_resource(), TAO_Leader_Follower::get_tss_resources(), TAO::Nested_Upcall_Guard::Nested_Upcall_Guard(), set_tss_resource(), and TAO::Nested_Upcall_Guard::~Nested_Upcall_Guard().
00290 {
00291 return ACE_TSS_GET (&this->tss_resources_,TAO_ORB_Core_TSS_Resources);
00292 }
|
|
|
Returns pointer to the factory for creating gui resources.
Definition at line 1539 of file ORB_Core.cpp. References TAO_TSS_Resources::gui_resource_factory_, and TAO_TSS_Resources::instance(). Referenced by TAO_Leader_Follower::reactor(), and TAO_Leader_Follower::~TAO_Leader_Follower().
01540 {
01541 return TAO_TSS_Resources::instance ()->gui_resource_factory_;
01542 }
|
|
|
Get the shutdown flag value.
Definition at line 354 of file ORB_Core.i. References has_shutdown_. Referenced by check_shutdown(), TAO_Connection_Handler::close_connection_eh(), TAO_Leader_Follower::reset_client_thread(), run(), TAO_Leader_Follower::set_client_thread(), shutdown(), and TAO_Connection_Handler::svc_i().
00355 {
00356 return this->has_shutdown_;
00357 }
|
|
||||||||||||
|
For details on how this is used please see the FT service Definition at line 162 of file ORB_Core.i. References ft_service_, TAO_Service_Callbacks::hash_ft(), and TAO_Fault_Tolerance_Service::service_callback(). Referenced by TAO_Profile::hash_service_i().
00164 {
00165 if (this->ft_service_.service_callback ())
00166 {
00167 return this->ft_service_.service_callback ()->hash_ft (p, m);
00168 }
00169
00170 return 0;
00171 }
|
|
|
Gets the value of TAO_ORB_Core::ifr_client_adapter_name_.
Definition at line 1476 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::ifr_client_adapter_name_, and TAO_ORB_Core_Static_Resources::instance().
01477 {
01478 return TAO_ORB_Core_Static_Resources::instance ()->ifr_client_adapter_name_.c_str();
01479 }
|
|
|
Sets the value of TAO_ORB_Core::ifr_client_adapter_name_.
Definition at line 1470 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::ifr_client_adapter_name_, and TAO_ORB_Core_Static_Resources::instance().
01471 {
01472 TAO_ORB_Core_Static_Resources::instance ()->ifr_client_adapter_name_ = name;
01473 }
|
|
|
Definition at line 373 of file ORB_Core.i. References implrepo_service_, and CORBA::Object_ptr.
00374 {
00375 this->implrepo_service_ = ir;
00376 }
|
|
|
Definition at line 2908 of file ORB_Core.cpp. References CORBA::Object::_duplicate(), CORBA::Object::_nil(), TAO_Pseudo_Var_T< T >::_retn(), ACE_CATCHANY, ACE_ENDTRY, ACE_ENV_ARG_PARAMETER, ACE_GUARD_RETURN, ACE_TRY_CHECK, ACE_TRY_NEW_ENV, implrepo_service_, CORBA::is_nil(), CORBA::Object_var, orb_, CORBA::ORB::resolve_initial_references(), TAO_SYNCH_MUTEX, and use_implrepo_.
02909 {
02910 if (!this->use_implrepo_)
02911 return CORBA::Object::_nil ();
02912
02913 if (CORBA::is_nil (this->implrepo_service_))
02914 {
02915
02916 ACE_TRY_NEW_ENV
02917 {
02918 CORBA::Object_var temp =
02919 this->orb_->resolve_initial_references ("ImplRepoService" ACE_ENV_ARG_PARAMETER);
02920 ACE_TRY_CHECK;
02921
02922 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->lock_, CORBA::Object::_nil ());
02923
02924 // @@ Worry about assigning a different IOR? (brunsch)
02925 this->implrepo_service_ = temp._retn ();
02926 }
02927 ACE_CATCHANY
02928 {
02929 // Just make sure that we have a null pointer. Ignore the exception
02930 // anyway.
02931 this->implrepo_service_ = CORBA::Object::_nil ();
02932 }
02933 ACE_ENDTRY;
02934 }
02935
02936 return CORBA::Object::_duplicate (this->implrepo_service_);
02937 }
|
|
|
Do we put the ImR's endpoints into persistent object references we create.
Definition at line 385 of file ORB_Core.i. References imr_endpoints_in_ior_.
00386 {
00387 return imr_endpoints_in_ior_;
00388 }
|
|
||||||||||||
|
Initialize the guts of the ORB Core. It is intended that this be called by <CORBA::ORB_init>. |
|
|
Return a pointer to the -ORBInitRef map.
Definition at line 204 of file ORB_Core.i. References init_ref_map_. Referenced by CORBA::ORB::resolve_initial_references().
00205 {
00206 return &this->init_ref_map_;
00207 }
|
|
||||||||||||
|
Initialize a new object, use the adapter registry to initialize a collocated object, if not possible then initialize a regular object. NOTE: Why would this method be required? The answer is if the user decides to use lazy initialization of CORBA object, then this is the route that we have to take to do the initialization. Definition at line 2028 of file ORB_Core.cpp. References TAO_Stub::base_profiles(), initialize_object_i(), and CORBA::Object_ptr. Referenced by CORBA::Object::tao_object_initialize().
02030 {
02031 // @@ What about forwarding. With this approach we are never forwarded
02032 // when we use collocation!
02033 const TAO_MProfile &mprofile =
02034 stub->base_profiles ();
02035
02036 return initialize_object_i (stub,
02037 mprofile);
02038 }
|
|
||||||||||||
|
Common code from ::initialize_object and ::reinitialize_object.
Definition at line 2049 of file ORB_Core.cpp. References _incr_refcnt(), ACE_GUARD_RETURN, adapter_registry(), TAO::ORB_Table::begin(), TAO::ORB_Table::end(), TAO_ORB_Core_Auto_Ptr::get(), TAO_Adapter_Registry::initialize_collocated_object(), TAO::ORB_Table::instance(), is_collocation_enabled(), and TAO_SYNCH_MUTEX. Referenced by initialize_object(), and reinitialize_object().
02052 {
02053 CORBA::Long retval = 0;
02054 TAO_ORB_Core_Auto_Ptr collocated_orb_core;
02055
02056 {
02057 // Lock the ORB_Table against concurrent modification while we
02058 // iterate through the ORBs.
02059 ACE_MT (ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
02060 guard,
02061 TAO::ORB_Table::instance()->lock_,
02062 0));
02063
02064 TAO::ORB_Table * const table = TAO::ORB_Table::instance ();
02065 TAO::ORB_Table::iterator const end = table->end ();
02066 for (TAO::ORB_Table::iterator i = table->begin (); i != end; ++i)
02067 {
02068 TAO_ORB_Core * const other_core = (*i).second.core ();
02069
02070 if (this->is_collocation_enabled (other_core,
02071 mprofile))
02072 {
02073 other_core->_incr_refcnt ();
02074 TAO_ORB_Core_Auto_Ptr tmp_auto_ptr (other_core);
02075 collocated_orb_core = tmp_auto_ptr;
02076 break;
02077 }
02078 }
02079 }
02080
02081 if (collocated_orb_core.get ())
02082 {
02083 TAO_Adapter_Registry *ar =
02084 collocated_orb_core.get ()->adapter_registry ();
02085
02086 retval = ar->initialize_collocated_object (stub);
02087 }
02088
02089 return retval;
02090 }
|
|
|
This allocator is always global and has no locks. It is intended for allocating the buffers used in *incoming* CDR streams. Definition at line 2795 of file ORB_Core.cpp. References TAO_Thread_Lane_Resources::input_cdr_buffer_allocator(), and lane_resources(). Referenced by create_input_cdr_data_block(), and CORBA::Object::tao_object_initialize().
02796 {
02797 return this->lane_resources ().input_cdr_buffer_allocator ();
02798 }
|
|
|
This allocator is global, may or may not have locks. It is intended for allocating the ACE_Data_Blocks used in *incoming* CDR streams. Definition at line 2789 of file ORB_Core.cpp. References TAO_Thread_Lane_Resources::input_cdr_dblock_allocator(), and lane_resources(). Referenced by create_input_cdr_data_block(), TAO_Transport::handle_input_parse_data(), TAO_GIOP_Message_Base::process_request_message(), and CORBA::Object::tao_object_initialize().
02790 {
02791 return this->lane_resources ().input_cdr_dblock_allocator ();
02792 }
|
|
|
This allocator is always global and has no locks. It is intended for allocating the buffers used in *incoming* CDR streams. Definition at line 2801 of file ORB_Core.cpp. References TAO_Thread_Lane_Resources::input_cdr_msgblock_allocator(), and lane_resources(). Referenced by TAO_GIOP_Message_Lite::make_queued_data(), TAO_GIOP_Message_Base::make_queued_data(), TAO_GIOP_Message_Base::process_request_message(), and CORBA::Object::tao_object_initialize().
02802 {
02803 return this->lane_resources ().input_cdr_msgblock_allocator ();
02804 }
|
|
|
Get the IOR Interceptor adapter. If not created, this method will try to create one. Definition at line 3249 of file ORB_Core.cpp. References ACE_ANY_EXCEPTION, ACE_CATCHANY, ACE_CHECK_RETURN, ACE_DECLARE_NEW_CORBA_ENV, ACE_ENDTRY, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, ACE_PRINT_EXCEPTION, ACE_TEXT_CHAR_TO_TCHAR, ACE_TRY, ACE_TRY_CHECK, configuration(), TAO_IORInterceptor_Adapter_Factory::create(), ior_interceptor_adapter_, iorinterceptor_adapter_factory_name(), and TAO_SYNCH_MUTEX. Referenced by add_interceptor().
03250 {
03251 if (this->ior_interceptor_adapter_ == 0)
03252 {
03253 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
03254 ace_mon,
03255 this->lock_,
03256 0);
03257
03258 if (this->ior_interceptor_adapter_ == 0)
03259 {
03260 ACE_DECLARE_NEW_CORBA_ENV;
03261 ACE_TRY
03262 {
03263 TAO_IORInterceptor_Adapter_Factory * ior_ap_factory =
03264 ACE_Dynamic_Service<TAO_IORInterceptor_Adapter_Factory>::instance
03265 (this->configuration (),
03266 ACE_TEXT_CHAR_TO_TCHAR (TAO_ORB_Core::iorinterceptor_adapter_factory_name ()));
03267
03268 if (ior_ap_factory)
03269 {
03270 this->ior_interceptor_adapter_ =
03271 ior_ap_factory->create (ACE_ENV_SINGLE_ARG_PARAMETER);
03272 ACE_TRY_CHECK;
03273 }
03274 }
03275 ACE_CATCHANY
03276 {
03277 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
03278 "Cannot initialize the "
03279 "ior_interceptor_adapter \n");
03280 }
03281 ACE_ENDTRY;
03282 ACE_CHECK_RETURN(0);
03283 }
03284 }
03285
03286 return this->ior_interceptor_adapter_;
03287 }
|
|
|
Gets the value of TAO_ORB_Core::iorinterceptor_adapter_factory_name_.
Definition at line 1500 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::iorinterceptor_adapter_factory_name_.
01501 {
01502 return TAO_ORB_Core_Static_Resources::instance ()->iorinterceptor_adapter_factory_name_.c_str();
01503 }
|
|
|
Sets the value of TAO_ORB_Core::iorinterceptor_adapter_factory_name_.
Definition at line 1494 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::iorinterceptor_adapter_factory_name_. Referenced by ior_interceptor_adapter().
01495 {
01496 TAO_ORB_Core_Static_Resources::instance ()->iorinterceptor_adapter_factory_name_ = name;
01497 }
|
|
|
See if we have a collocated address, if yes, return the POA associated with the address. Definition at line 2109 of file ORB_Core.cpp. References TAO_Thread_Lane_Resources_Manager::is_collocated(), and thread_lane_resources_manager(). Referenced by is_collocation_enabled().
02110 {
02111 // @@ Lots of issues arise when dealing with collocation. What about
02112 // forwarding or what if this is a multi-profile IOR where the order is
02113 // significant and only one of the profiles is collocated. For example
02114 // when using a multiple servers for fault tolerance. For now, we just
02115 // look through all profiles and if any are colocated then we assume
02116 // the object is collocated.
02117 // @@ Note, if collocated we can not be forwarded!
02118 // Also, acceptor_registry_->is_collocated (...) will check the
02119 // address (ORB Host) but not the object_key. This should be checked
02120 // also.
02121
02122 return this->thread_lane_resources_manager ().is_collocated (mprofile);
02123 }
|
|
||||||||||||
|
Checks to see whether collocation optimizations have to be applied on objects in the other_orb Definition at line 2093 of file ORB_Core.cpp. References is_collocated(), optimize_collocation_objects(), and use_global_collocation(). Referenced by create_object(), and initialize_object_i().
02095 {
02096 if (!orb_core->optimize_collocation_objects ())
02097 return 0;
02098
02099 if (!orb_core->use_global_collocation () && orb_core != this)
02100 return 0;
02101
02102 if (!orb_core->is_collocated (mp))
02103 return 0;
02104
02105 return 1;
02106 }
|
|
||||||||||||
|
Verify condition for permanent forward is given, both parameters must provide group attributes. Definition at line 638 of file ORB_Core.i. References TAO_Service_Callbacks::is_permanent_forward_condition(), and CORBA::Object_ptr. Referenced by TAO::Synch_Twoway_Invocation::check_reply_status(), TAO_ServerRequest::init_reply(), and TAO_GIOP_Message_Base::process_request().
00640 {
00641 const TAO_Service_Callbacks *service_callback =
00642 this->fault_tolerance_service ().service_callback ();
00643
00644 const CORBA::Boolean permanent_forward_condition =
00645 service_callback &&
00646 service_callback->is_permanent_forward_condition (obj,
00647 service_context);
00648
00649 return permanent_forward_condition;
00650 }
|
|
||||||||||||
|
For details on how this is used please see the FT service Definition at line 145 of file ORB_Core.i. References ft_service_, TAO_Service_Callbacks::is_profile_equivalent(), and TAO_Fault_Tolerance_Service::service_callback(). Referenced by TAO_Profile::is_equivalent_hook().
00147 {
00148 TAO_Service_Callbacks::Profile_Equivalence retval
00149 = TAO_Service_Callbacks::DONT_KNOW;
00150
00151 if (this->ft_service_.service_callback ())
00152 {
00153 retval =
00154 this->ft_service_.service_callback ()->is_profile_equivalent (this_p,
00155 that_p);
00156 }
00157
00158 return retval;
00159 }
|
|
|
Get access to the thread lane resources.
Definition at line 2421 of file ORB_Core.cpp. References TAO_Thread_Lane_Resources_Manager::lane_resources(), and thread_lane_resources_manager(). Referenced by TAO_IIOP_Connection_Handler::add_transport_to_cache(), TAO_Connector::connect(), connector_registry(), TAO_Tagged_Profile::extract_object_key(), TAO::Profile_Transport_Resolver::find_transport(), input_cdr_buffer_allocator(), input_cdr_dblock_allocator(), input_cdr_msgblock_allocator(), leader_follower(), TAO_Creation_Strategy< SVC_HANDLER >::make_svc_handler(), output_cdr_buffer_allocator(), output_cdr_dblock_allocator(), output_cdr_msgblock_allocator(), TAO_Connector::parallel_connect(), TAO_IIOP_Transport::set_bidir_context_info(), TAO_Transport::transport_cache_manager(), and transport_message_buffer_allocator().
02422 {
02423 return this->thread_lane_resources_manager ().lane_resources ();
02424 }
|
|
|
Get access to the leader_follower class.
Definition at line 2128 of file ORB_Core.cpp. References lane_resources(), and TAO_Thread_Lane_Resources::leader_follower(). Referenced by TAO_Leader_Follower_Flushing_Strategy::flush_message(), reactor(), run(), TAO_Wait_On_Leader_Follower::wait(), and TAO_LF_Connect_Strategy::wait_i().
02129 {
02130 return this->lane_resources ().leader_follower ();
02131 }
|
|
|
Get access to the leader follower strategy.
Definition at line 2134 of file ORB_Core.cpp. References TAO_Thread_Lane_Resources_Manager::lf_strategy(), and thread_lane_resources_manager(). Referenced by TAO_GIOP_Message_Lite::process_request_message(), TAO_GIOP_Message_Base::process_request_message(), and run().
02135 {
02136 return this->thread_lane_resources_manager ().lf_strategy ();
02137 }
|
|
|
List all the service known by the ORB.
Definition at line 2730 of file ORB_Core.cpp. References TAO_Seq_Var_Base_T< T >::_retn(), ACE_CHECK_RETURN, ACE_NEW_THROW_EX, ACE_Array_Map< Key, Value, EqualTo >::begin(), TAO_Object_Ref_Table::begin(), TAO_Object_Ref_Table::current_size(), ACE_Array_Map< Key, Value, EqualTo >::end(), TAO_Object_Ref_Table::end(), init_ref_map_, object_ref_table_, CORBA::ORB::ObjectIdList, CORBA::ORB::ObjectIdList_var, ACE_Array_Map< Key, Value, EqualTo >::size(), CORBA::string_dup(), and TAO_LIST_OF_INITIAL_SERVICES. Referenced by CORBA::ORB::list_initial_services().
02731 {
02732 // Unsupported initial services should NOT be included in the below list!
02733 static const char *initial_services[] = { TAO_LIST_OF_INITIAL_SERVICES };
02734 // Make sure the "terminating" zero is the last array element so
02735 // that there is a stop condition when iterating through the list.
02736
02737 static const size_t initial_services_size =
02738 sizeof (initial_services) / sizeof (initial_services[0]);
02739
02740 const size_t total_size =
02741 initial_services_size
02742 + this->init_ref_map_.size ()
02743 + this->object_ref_table_.current_size ();
02744
02745 CORBA::ORB::ObjectIdList *tmp = 0;
02746
02747 ACE_NEW_THROW_EX (tmp,
02748 CORBA::ORB::ObjectIdList (
02749 static_cast<CORBA::ULong> (total_size)),
02750 CORBA::NO_MEMORY ());
02751 ACE_CHECK_RETURN (0);
02752
02753 CORBA::ORB::ObjectIdList_var list (tmp);
02754 list->length (static_cast<CORBA::ULong> (total_size));
02755
02756 CORBA::ULong index = 0;
02757 // Index for ObjectIdList members.
02758
02759 // Iterate over the registered initial references.
02760 for (index = 0; index < initial_services_size; ++index)
02761 list[index] = initial_services[index];
02762
02763 // Now iterate over the initial references created by the user and
02764 // add them to the sequence.
02765
02766 // References registered via
02767 // ORBInitInfo::register_initial_reference().
02768 TAO_Object_Ref_Table::iterator const obj_ref_end =
02769 this->object_ref_table_.end ();
02770
02771 for (TAO_Object_Ref_Table::iterator i = this->object_ref_table_.begin ();
02772 i != obj_ref_end;
02773 ++i, ++index)
02774 list[index] = CORBA::string_dup ((*i).first.in ());
02775
02776 // References registered via INS.
02777 InitRefMap::iterator const end = this->init_ref_map_.end ();
02778
02779 for (InitRefMap::iterator j = this-> init_ref_map_.begin ();
02780 j != end;
02781 ++j, ++index)
02782 list[index] = (*j).second.c_str ();
02783
02784 return list._retn ();
02785 }
|
|
|
Call the libraries to handover the validators if they havent registered yet with the list of validators. Definition at line 1953 of file ORB_Core.cpp. References ACE_ENV_ARG_PARAMETER, ACE_TEXT, bidir_adapter_, configuration(), and TAO_BiDir_Adapter::load_policy_validators().
01955 {
01956 if (this->bidir_adapter_ == 0)
01957 {
01958 this->bidir_adapter_ =
01959 ACE_Dynamic_Service<TAO_BiDir_Adapter>::instance
01960 (this->configuration (), ACE_TEXT ("BiDirGIOP_Loader"));
01961 }
01962
01963 // Call the BiDir library if it has been loaded
01964 if (this->bidir_adapter_)
01965 this->bidir_adapter_->load_policy_validators (validator ACE_ENV_ARG_PARAMETER);
01966 }
|
|
|
Return the locking strategy used for the data blocks.
Definition at line 38 of file ORB_Core.i. References data_block_lock_, resource_factory(), and TAO_Resource_Factory::use_locked_data_blocks(). Referenced by TAO_Transport::handle_input_parse_data().
00039 {
00040 if (this->resource_factory ()->use_locked_data_blocks ())
00041 return &this->data_block_lock_;
00042
00043 return 0;
00044 }
|
|
|
Choose to be not a default ORB when there is more than one ORB.
Definition at line 217 of file ORB_Core.i. References TAO::ORB_Table::instance(), and TAO::ORB_Table::not_default().
00218 {
00219 TAO::ORB_Table * const table = TAO::ORB_Table::instance ();
00220 table->not_default (orb_id);
00221 }
|
|
|
The loaded service would determine if the CORBA::Object_ptr is actually nil or not. This would be useful to accomodate new enhanced definitions as defined by the service specification. Definition at line 132 of file ORB_Core.i. References ft_service_, TAO_Service_Callbacks::object_is_nil(), CORBA::Object_ptr, and TAO_Fault_Tolerance_Service::service_callback(). Referenced by CORBA::Object::is_nil_i().
00133 {
00134 CORBA::Boolean retval = 0;
00135 if (this->ft_service_.service_callback ())
00136 {
00137 retval =
00138 this->ft_service_.service_callback ()->object_is_nil (obj);
00139 }
00140 return retval;
00141 }
|
|
|
Acceessor to the table that stores the object_keys.
Definition at line 65 of file ORB_Core.i. References object_key_table_. Referenced by TAO_Profile::decode(), TAO_IIOP_Profile::parse_string_i(), TAO_Profile::TAO_Profile(), and TAO_Profile::~TAO_Profile().
00066 {
00067 return this->object_key_table_;
00068 }
|
|
|
Return the table that maps object key/name to de-stringified object reference. It is needed for supporting local objects in the resolve_initial_references() mechanism. Definition at line 59 of file ORB_Core.i. References object_ref_table_. Referenced by CORBA::ORB::register_initial_reference(), CORBA::ORB::resolve_initial_references(), and resolve_rt_orb().
00060 {
00061 return this->object_ref_table_;
00062 }
|
|
|
|
|
|
Definition at line 230 of file ORB_Core.i. References opt_for_collocation_.
00231 {
00232 return this->opt_for_collocation_;
00233 }
|
|
|
Definition at line 224 of file ORB_Core.i. References opt_for_collocation_. Referenced by is_collocation_enabled().
00225 {
00226 this->opt_for_collocation_ = opt;
00227 }
|
|
|
Get pointer to the ORB.
Definition at line 186 of file ORB_Core.i. References orb_. Referenced by TAO_Profile::get_policies(), TAO_ServerRequest::orb(), resolve_rir(), and TAO_Profile::verify_orb_configuration().
00187 {
00188 return this->orb_;
00189 }
|
|
|
|
Return ORBid string.
Definition at line 367 of file ORB_Core.i. References orbid_.
00368 {
00369 return this->orbid_;
00370 }
|
|
|
Return pointer to the orb initializer registry associated with this ORB core. Tries to load the PI library if it is not loaded yet Definition at line 457 of file ORB_Core.i. References ACE_GUARD_RETURN, orbinitializer_registry_, orbinitializer_registry_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB_init().
00458 {
00459 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00460 0);
00461 if (orbinitializer_registry_ == 0)
00462 {
00463 return this->orbinitializer_registry_i ();
00464 }
00465 return this->orbinitializer_registry_;
00466 }
|
|
|
Return pointer to the orb initializer registry associated with this ORB core. Definition at line 1618 of file ORB_Core.cpp. References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_TEXT, configuration(), orbinitializer_registry_, and ACE_Service_Gestalt::process_directive(). Referenced by orbinitializer_registry().
01619 {
01620 // If not, lookup it up.
01621 this->orbinitializer_registry_ =
01622 ACE_Dynamic_Service<TAO::ORBInitializer_Registry_Adapter>::instance
01623 (this->configuration (),
01624 ACE_TEXT ("ORBInitializer_Registry"));
01625
01626 #if !defined (TAO_AS_STATIC_LIBS)
01627 // In case we build shared, try to load the PI Client library, in a
01628 // static build we just can't do this, so don't try it, lower layers
01629 // output an error then.
01630 if (orbinitializer_registry_ == 0)
01631 {
01632 this->configuration ()->process_directive (
01633 ACE_DYNAMIC_SERVICE_DIRECTIVE("ORBInitializer_Registry",
01634 "TAO_PI",
01635 "_make_ORBInitializer_Registry",
01636 ""));
01637 orbinitializer_registry_ =
01638 ACE_Dynamic_Service<TAO::ORBInitializer_Registry_Adapter>::instance
01639 (this->configuration (),
01640 ACE_TEXT ("ORBInitializer_Registry"));
01641 }
01642 #endif /* !TAO_AS_STATIC_LIBS */
01643
01644 return this->orbinitializer_registry_;
01645 }
|
|
|
This allocator is always TSS and has no locks. It is intended for allocating the buffers used in *outgoing* CDR streams. Definition at line 2814 of file ORB_Core.cpp. References lane_resources(), and TAO_Thread_Lane_Resources::output_cdr_buffer_allocator(). Referenced by TAO_GIOP_Message_Lite::send_reply_exception().
02815 {
02816 return this->lane_resources ().output_cdr_buffer_allocator ();
02817 }
|
|
|
This allocator is always TSS and has no locks. It is intended for allocating the ACE_Data_Blocks used in *outgoing* CDR streams. Definition at line 2807 of file ORB_Core.cpp. References lane_resources(), and TAO_Thread_Lane_Resources::output_cdr_dblock_allocator(). Referenced by TAO_Profile::create_tagged_profile(), TAO_Profile::encode(), CORBA::ORB::object_to_string(), TAO_GIOP_Message_Lite::process_request_message(), TAO_ServerRequest::send_cached_reply(), TAO_GIOP_Message_Lite::send_reply_exception(), and TAO_ServerRequest::tao_send_reply_exception().
02808 {
02809
02810 return this->lane_resources ().output_cdr_dblock_allocator ();
02811 }
|
|
|
This allocator is always TSS and has no locks. It is intended for allocating the ACE_Data_Blocks used in *outgoing* CDR streams. Definition at line 2821 of file ORB_Core.cpp. References lane_resources(), and TAO_Thread_Lane_Resources::output_cdr_msgblock_allocator(). Referenced by TAO_Profile::create_tagged_profile(), TAO_Profile::encode(), CORBA::ORB::object_to_string(), TAO_GIOP_Message_Lite::process_request_message(), TAO_ServerRequest::send_cached_reply(), TAO_GIOP_Message_Lite::send_reply_exception(), and TAO_ServerRequest::tao_send_reply_exception().
02822 {
02823 return this->lane_resources ().output_cdr_msgblock_allocator ();
02824 }
|
|
|
Get the IOR parser registry.
Definition at line 271 of file ORB_Core.i. References parser_registry_. Referenced by CORBA::ORB::string_to_object().
00272 {
00273 return &this->parser_registry_;
00274 }
|
|
|
Set the pointer to the cached TAO::PICurrent object.
Definition at line 613 of file ORB_Core.i. References CORBA::Object_ptr, and pi_current_.
00614 {
00615 // Not duplicated since the ORB Core's "object_ref_table" already
00616 // contains a duplicate of the PICurrent object.
00617 this->pi_current_ = current;
00618 }
|
|
|
Return a pointer to the cached TAO::PICurrent object.
Definition at line 603 of file ORB_Core.i. References pi_current_.
00604 {
00605 // A pointer/reference to PICurrent is cached in the ORB Core since
00606 // it is accessed in the critical path (i.e. the request invocation
00607 // path). Caching it prevents additional overhead to due object
00608 // resolution from occurring.
00609 return this->pi_current_;
00610 }
|
|
|
Get the adapter named "RootPOA" and cache the result, this is an optimization for the POA. Definition at line 1877 of file ORB_Core.cpp. References ACE_GUARD_RETURN, adapter_registry_, TAO_Adapter_Registry::find_adapter(), poa_adapter_, and TAO_SYNCH_MUTEX. Referenced by root_poa().
01878 {
01879 if (this->poa_adapter_ == 0)
01880 {
01881 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->lock_, 0);
01882 if (this->poa_adapter_ == 0)
01883 {
01884 this->poa_adapter_ =
01885 this->adapter_registry_.find_adapter ("RootPOA");
01886 }
01887 }
01888 return this->poa_adapter_;
01889 }
|
|
|
|
|
|
Access the POA factory name.
Definition at line 1677 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::poa_factory_name_.
01678 {
01679 return TAO_ORB_Core_Static_Resources::instance ()->poa_factory_name_;
01680 }
|
|
|
Accesors to the policy current, this object should be kept in TSS storage. The POA has to reset the policy current object on every upcall. Definition at line 552 of file ORB_Core.i. References policy_current_. Referenced by get_cached_policy_including_current(), get_policy_including_current(), and CORBA::ORB::resolve_policy_current().
00553 {
00554 return *this->policy_current_;
00555 }
|
|
|
Return pointer to the policy factory registry associated with this ORB core. Definition at line 469 of file ORB_Core.i. References ACE_GUARD_RETURN, policy_factory_registry_, policy_factory_registry_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::_create_policy(), and CORBA::ORB::create_policy().
00470 {
00471 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00472 0);
00473 if (policy_factory_registry_ == 0)
00474 {
00475 return this->policy_factory_registry_i ();
00476 }
00477 return this->policy_factory_registry_;
00478 }
|
|
|
Return pointer to the policy factory registry associated with this ORB core. Definition at line 1587 of file ORB_Core.cpp. References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_TEXT, configuration(), TAO_PolicyFactory_Registry_Factory::create(), policy_factory_registry_, and ACE_Service_Gestalt::process_directive(). Referenced by policy_factory_registry().
01588 {
01589
01590 TAO_PolicyFactory_Registry_Factory *loader =
01591 ACE_Dynamic_Service<TAO_PolicyFactory_Registry_Factory>::instance
01592 (this->configuration (),
01593 ACE_TEXT ("PolicyFactory_Loader"));
01594
01595 if (loader == 0)
01596 {
01597 this->configuration ()->process_directive (
01598 ACE_DYNAMIC_SERVICE_DIRECTIVE("PolicyFactory_Loader",
01599 "TAO_PI",
01600 "_make_TAO_PolicyFactory_Loader",
01601 ""));
01602 loader =
01603 ACE_Dynamic_Service<TAO_PolicyFactory_Registry_Factory>::instance
01604 (this->configuration (),
01605 ACE_TEXT ("PolicyFactory_Loader"));
01606 }
01607
01608 if (loader != 0)
01609 {
01610 this->policy_factory_registry_ =
01611 loader->create ();
01612 }
01613
01614 return this->policy_factory_registry_;
01615 }
|
|
|
Return the Policy_Manager for this ORB.
Definition at line 281 of file ORB_Core.i. References policy_manager_. Referenced by get_cached_policy(), get_policy(), and CORBA::ORB::resolve_policy_manager().
00282 {
00283 return this->policy_manager_;
00284 }
|
|
|
Get the protocol factories.
Definition at line 265 of file ORB_Core.i. References protocol_factories(), and TAO_OC_RETRIEVE. Referenced by TAO_Connector_Registry::open(), TAO_Acceptor_Registry::open(), TAO_Acceptor_Registry::open_default(), and protocol_factories().
00266 {
00267 return TAO_OC_RETRIEVE (protocol_factories);
00268 }
|
|
|
Returns pointer to the Protocols_Hooks.
|
|
|
Wrappers that forward the request to the concurrency strategy.
Definition at line 2902 of file ORB_Core.cpp. References leader_follower(), and TAO_Leader_Follower::reactor(). Referenced by TAO_Connection_Handler::close_connection_eh(), TAO::Transport_Cache_Manager::find_transport(), TAO_Resume_Handle::handle_input_return_value_hook(), TAO_Transport::notify_reactor(), TAO_Transport::register_handler(), TAO_Leader_Follower::reset_client_thread(), TAO_Resume_Handle::resume_handle(), run(), TAO_Leader_Follower::set_client_thread(), TAO_Wait_On_Read::wait(), TAO_Wait_On_Reactor::wait(), and CORBA::ORB::work_pending().
02903 {
02904 return this->leader_follower ().reactor ();
02905 }
|
|
|
Register the handle of an open connection with the ORB Core handle set. This handle set will be used to explicitly remove corresponding event handlers from the reactor. |
|
|
Reinitialise a stub after the effective profile has changed. This will happen after a location forward has been received or if a location forward supplied new target subsequently fails. Definition at line 2041 of file ORB_Core.cpp. References TAO_Stub::base_profiles(), TAO_Stub::forward_profiles(), and initialize_object_i().
02042 {
02043 return initialize_object_i (stub, stub->forward_profiles ()
02044 ? *(stub->forward_profiles ())
02045 : stub->base_profiles ());
02046 }
|
|
|
Remove from the ORB Core's handle set so that it isn't included in the set that is passed to the reactor upon ORB destruction. |
|
|
Set a new request dispatcher. The ORB Core retains ownership of the request dispatcher once it gets it. Currently, this only gets called at initialization. Definition at line 1906 of file ORB_Core.cpp. References request_dispatcher_.
01907 {
01908 // Assume ownership of the request dispatcher.
01909 TAO_Request_Dispatcher *tmp = this->request_dispatcher_;
01910 this->request_dispatcher_ = request_dispatcher;
01911 delete tmp;
01912 }
|
|
|
Return the current request dispatcher strategy.
Definition at line 198 of file ORB_Core.i. References request_dispatcher_. Referenced by TAO::Collocated_Invocation::invoke(), TAO_GIOP_Message_Base::process_locate_request(), and TAO_GIOP_Message_Base::process_request().
00199 {
00200 return this->request_dispatcher_;
00201 }
|
|
|
Reset the flags in the loaded services.
Definition at line 117 of file ORB_Core.i. References ft_service_, TAO_Service_Callbacks::reset_profile_flags(), and TAO_Fault_Tolerance_Service::service_callback().
00118 {
00119 // @@ If different services have the same feature we may want to
00120 // prioritise them here. We need to decide here whose selection of
00121 // profile is more important.
00122
00123 if (this->ft_service_.service_callback ())
00124 {
00125 this->ft_service_.service_callback ()->reset_profile_flags ();
00126 }
00127 return;
00128 }
|
|
|
Resolve the CodecFactory DLL.
Definition at line 421 of file ORB_Core.i. References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_codecfactory_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00422 {
00423 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00424 CORBA::Object::_nil ());
00425 if (CORBA::is_nil (this->codec_factory_))
00426 {
00427 this->resolve_codecfactory_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00428 ACE_CHECK_RETURN (CORBA::Object::_nil ());
00429 }
00430 return CORBA::Object::_duplicate (this->codec_factory_);
00431 }
|
|
|
Obtain and cache the codec factory object reference.
Definition at line 2460 of file ORB_Core.cpp. References ACE_CHECK, ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_TEXT, codec_factory_, configuration(), TAO_Object_Loader::create_object(), and ACE_Service_Gestalt::process_directive(). Referenced by resolve_codecfactory().
02461 {
02462 TAO_Object_Loader *loader =
02463 ACE_Dynamic_Service<TAO_Object_Loader>::instance
02464 (this->configuration (),
02465 ACE_TEXT ("CodecFactory_Loader"));
02466
02467 if (loader == 0)
02468 {
02469 this->configuration()->process_directive
02470 (ACE_DYNAMIC_SERVICE_DIRECTIVE("CodecFactory",
02471 "TAO_CodecFactory",
02472 "_make_TAO_CodecFactory_Loader",
02473 ""));
02474 loader =
02475 ACE_Dynamic_Service<TAO_Object_Loader>::instance
02476 (this->configuration (), ACE_TEXT ("CodecFactory_Loader"));
02477 }
02478
02479 if (loader != 0)
02480 {
02481 this->codec_factory_ =
02482 loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER);
02483 ACE_CHECK;
02484 }
02485 }
|
|
|
Resolve the Dynamic Any Factory.
Definition at line 481 of file ORB_Core.i. References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_dynanyfactory_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00482 {
00483 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00484 CORBA::Object::_nil ());
00485 if (CORBA::is_nil (this->dynany_factory_))
00486 {
00487 this->resolve_dynanyfactory_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00488 ACE_CHECK_RETURN (CORBA::Object::_nil ());
00489 }
00490 return CORBA::Object::_duplicate (this->dynany_factory_);
00491 }
|
|
|
Obtain and cache the dynamic any factory object reference.
Definition at line 2552 of file ORB_Core.cpp. References ACE_CHECK, ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_TEXT, configuration(), TAO_Object_Loader::create_object(), dynany_factory_, and ACE_Service_Gestalt::process_directive(). Referenced by resolve_dynanyfactory().
02553 {
02554 TAO_Object_Loader *loader =
02555 ACE_Dynamic_Service<TAO_Object_Loader>::instance
02556 (this->configuration (),
02557 ACE_TEXT ("DynamicAny_Loader"));
02558
02559 if (loader == 0)
02560 {
02561 this->configuration ()->process_directive
02562 (ACE_DYNAMIC_SERVICE_DIRECTIVE("DynamicAny_Loader",
02563 "TAO_DynamicAny",
02564 "_make_TAO_DynamicAny_Loader",
02565 ""));
02566 loader =
02567 ACE_Dynamic_Service<TAO_Object_Loader>::instance
02568 (this->configuration (),
02569 ACE_TEXT ("DynamicAny_Loader"));
02570 }
02571
02572 if (loader != 0)
02573 {
02574 this->dynany_factory_ =
02575 loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER);
02576 ACE_CHECK;
02577 }
02578 }
|
|
|
Resolve the IOR Manipulation reference for this ORB.
Definition at line 494 of file ORB_Core.i. References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_iormanipulation_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00495 {
00496 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00497 CORBA::Object::_nil ());
00498 if (CORBA::is_nil (this->ior_manip_factory_))
00499 {
00500 this->resolve_iormanipulation_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00501 ACE_CHECK_RETURN (CORBA::Object::_nil ());
00502 }
00503 return CORBA::Object::_duplicate (this->ior_manip_factory_);
00504 }
|
|
|
Resolve the IOR Table reference for this ORB.
Definition at line 507 of file ORB_Core.i. References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_ior_table_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00508 {
00509 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00510 CORBA::Object::_nil ());
00511 if (CORBA::is_nil (this->ior_table_))
00512 {
00513 this->resolve_ior_table_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00514 ACE_CHECK_RETURN (CORBA::Object::_nil ());
00515 }
00516 return CORBA::Object::_duplicate (this->ior_table_);
00517 }
|
|
|
Obtain and cache the dynamic any factory object reference.
Definition at line 2609 of file ORB_Core.cpp. References TAO_Pseudo_Var_T< T >::_retn(), ACE_CHECK, ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_TEXT, adapter_registry_, configuration(), TAO_Adapter_Factory::create(), ACE_Auto_Basic_Ptr< X >::get(), TAO_Adapter_Registry::insert(), ior_table_, CORBA::Object_var, ACE_Service_Gestalt::process_directive(), and ACE_Auto_Basic_Ptr< X >::release(). Referenced by resolve_ior_table().
02610 {
02611 TAO_Adapter_Factory *factory =
02612 ACE_Dynamic_Service<TAO_Adapter_Factory>::instance
02613 (this->configuration (),
02614 ACE_TEXT ("TAO_IORTable"));
02615
02616 if (factory == 0)
02617 {
02618 this->configuration ()->process_directive
02619 (ACE_DYNAMIC_SERVICE_DIRECTIVE("TAO_IORTable",
02620 "TAO_IORTable",
02621 "_make_TAO_Table_Adapter_Factory",
02622 ""));
02623 factory =
02624 ACE_Dynamic_Service<TAO_Adapter_Factory>::instance
02625 (this->configuration (), ACE_TEXT ("TAO_IORTable"));
02626 }
02627
02628 if (factory != 0)
02629 {
02630 ACE_Auto_Ptr <TAO_Adapter> iortable_adapter (factory->create (this));
02631 iortable_adapter->open (ACE_ENV_SINGLE_ARG_PARAMETER);
02632 ACE_CHECK;
02633
02634 CORBA::Object_var tmp_root = iortable_adapter->root ();
02635
02636 this->adapter_registry_.insert (iortable_adapter.get () ACE_ENV_ARG_PARAMETER);
02637 ACE_CHECK;
02638
02639 // It is now (exception) safe to release ownership from the auto pointers
02640 this->ior_table_= tmp_root._retn ();
02641 iortable_adapter.release ();
02642 }
02643 }
|
|
|
Obtain and cache the IORManipulation factory object reference.
Definition at line 2581 of file ORB_Core.cpp. References ACE_CHECK, ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_TEXT, configuration(), TAO_Object_Loader::create_object(), ior_manip_factory_, and ACE_Service_Gestalt::process_directive(). Referenced by resolve_ior_manipulation().
02582 {
02583 TAO_Object_Loader *loader =
02584 ACE_Dynamic_Service<TAO_Object_Loader>::instance
02585 (this->configuration (),
02586 ACE_TEXT ("IORManip_Loader"));
02587
02588 if (loader == 0)
02589 {
02590 this->configuration()->process_directive
02591 (ACE_DYNAMIC_SERVICE_DIRECTIVE("IORManip_Loader",
02592 "TAO_IORManip",
02593 "_make_TAO_IORManip_Loader",
02594 ""));
02595 loader =
02596 ACE_Dynamic_Service<TAO_Object_Loader>::instance
02597 (this->configuration (), ACE_TEXT ("IORManip_Loader"));
02598 }
02599
02600 if (loader != 0)
02601 {
02602 this->ior_manip_factory_ =
02603 loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER);
02604 ACE_CHECK;
02605 }
02606 }
|
|
|
Resolve the PICurrent.
Definition at line 406 of file ORB_Core.i. References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_picurrent_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00407 {
00408 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00409 CORBA::Object::_nil ());
00410 if (CORBA::is_nil (this->pi_current_))
00411 {
00412 this->resolve_picurrent_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00413 ACE_CHECK_RETURN (CORBA::Object::_nil ());
00414 }
00415 return CORBA::Object::_duplicate (this->pi_current_);
00416 }
|
|
|
Obtain and cache the picurrent factory object reference.
Definition at line 2519 of file ORB_Core.cpp. References ACE_CHECK, ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_TEXT, configuration(), TAO_Object_Loader::create_object(), CORBA::Object_ptr, pi_current_, and ACE_Service_Gestalt::process_directive(). Referenced by resolve_picurrent().
02520 {
02521 TAO_Object_Loader *loader =
02522 ACE_Dynamic_Service<TAO_Object_Loader>::instance
02523 (this->configuration (),
02524 ACE_TEXT ("PICurrent_Loader"));
02525
02526 if (loader == 0)
02527 {
02528 this->configuration ()->process_directive
02529 (ACE_DYNAMIC_SERVICE_DIRECTIVE("PICurrent_Loader",
02530 "TAO_PI",
02531 "_make_TAO_PICurrent_Loader",
02532 ""));
02533 loader =
02534 ACE_Dynamic_Service<TAO_Object_Loader>::instance
02535 (this->configuration (), ACE_TEXT ("PICurrent_Loader"));
02536 }
02537
02538 if (loader != 0)
02539 {
02540 CORBA::Object_ptr pi =
02541 loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER);
02542 ACE_CHECK;
02543
02544 this->pi_current_ = pi;
02545 }
02546 }
|
|
|
Resolve POA Current.
Definition at line 560 of file ORB_Core.i. References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_poa_current_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00561 {
00562 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00563 CORBA::Object::_nil ());
00564 if (CORBA::is_nil (this->poa_current_.in ()))
00565 {
00566 this->resolve_poa_current_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00567 ACE_CHECK_RETURN (CORBA::Object::_nil ());
00568 }
00569 return CORBA::Object::_duplicate (this->poa_current_.in ());
00570 }
|
|
|
Obtain and cache the poa current.
Definition at line 2488 of file ORB_Core.cpp. References ACE_CHECK, ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_TEXT, configuration(), TAO_Object_Loader::create_object(), poa_current_, and ACE_Service_Gestalt::process_directive(). Referenced by resolve_poa_current().
02489 {
02490 TAO_Object_Loader *loader =
02491 ACE_Dynamic_Service<TAO_Object_Loader>::instance
02492 (this->configuration(),
02493 ACE_TEXT ("TAO_POA_Current_Factory"));
02494
02495 if (loader == 0)
02496 {
02497 this->configuration()->process_directive
02498 (ACE_DYNAMIC_SERVICE_DIRECTIVE("TAO_POA_Current_Factory",
02499 "TAO_PortableServer",
02500 "_make_TAO_POA_Current_Factory",
02501 ""));
02502 loader =
02503 ACE_Dynamic_Service<TAO_Object_Loader>::instance
02504 (this->configuration(), ACE_TEXT ("TAO_POA_Current_Factory"));
02505 }
02506
02507 if (loader != 0)
02508 {
02509 this->poa_current_ =
02510 loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER);
02511 ACE_CHECK;
02512 }
02513 }
|
|
|
Resolve an initial reference via the -ORBInitRef and.
Definition at line 2669 of file ORB_Core.cpp. References CORBA::Object::_nil(), ACE_CHECK_RETURN, ACE_CString, ACE_ENV_ARG_PARAMETER, ACE_ENV_SINGLE_ARG_PARAMETER, connector_registry(), TAO_ORB_Parameters::default_init_ref(), TAO::String_var< charT >::in(), TAO_Connector_Registry::object_key_delimiter(), orb(), orb_params(), CORBA::ORB::string_to_object(), CORBA::String_var, ACE_OS::strlen(), and ACE_OS::strncmp(). Referenced by CORBA::ORB::resolve_initial_references().
02671 {
02672 // Get the table of initial references specified through
02673 // -ORBInitRef.
02674 ACE_CString ior;
02675 ACE_CString object_id ((const char *) name);
02676
02677 // Get the list of initial reference prefixes specified through
02678 // -ORBDefaultInitRef.
02679 CORBA::String_var default_init_ref =
02680 this->orb_params ()->default_init_ref ();
02681
02682 // Check if a DefaultInitRef was specified.
02683 if (ACE_OS::strlen (default_init_ref.in ()) != 0)
02684 {
02685 static const char corbaloc_prefix[] = "corbaloc:";
02686 static const char mcast_prefix[] = "mcast:";
02687 char object_key_delimiter = 0;
02688
02689 ACE_CString list_of_profiles (default_init_ref.in ());
02690
02691 // Check if the protocol is corbaloc: or mcast:.
02692 // If it is, set the object_key_delimiter.
02693 if ((ACE_OS::strncmp (default_init_ref.in (),
02694 corbaloc_prefix,
02695 sizeof corbaloc_prefix -1) == 0) ||
02696 (ACE_OS::strncmp (default_init_ref.in (),
02697 mcast_prefix,
02698 sizeof mcast_prefix -1) == 0))
02699 {
02700 object_key_delimiter = '/';
02701 }
02702 else
02703 {
02704 TAO_Connector_Registry *conn_reg =
02705 this->connector_registry (ACE_ENV_SINGLE_ARG_PARAMETER);
02706 ACE_CHECK_RETURN (0);
02707
02708 // Obtain the appropriate object key delimiter for the
02709 // specified protocol.
02710 object_key_delimiter =
02711 conn_reg->object_key_delimiter (list_of_profiles.c_str ());
02712 }
02713
02714 // Make sure that the default initial reference doesn't end
02715 // with the object key delimiter character.
02716 if (list_of_profiles[list_of_profiles.length() - 1] !=
02717 object_key_delimiter)
02718 list_of_profiles += ACE_CString (object_key_delimiter);
02719
02720 list_of_profiles += object_id;
02721
02722 return this->orb ()->string_to_object (list_of_profiles.c_str ()
02723 ACE_ENV_ARG_PARAMETER);
02724 }
02725
02726 return CORBA::Object::_nil ();
02727 }
|
|
|
Resolve the RT ORB reference for this ORB.
Definition at line 583 of file ORB_Core.i. References CORBA::Object::_duplicate(), ACE_GUARD_RETURN, CORBA::is_nil(), object_ref_table(), TAO_Object_Ref_Table::resolve_initial_reference(), rt_orb_, TAO_OBJID_RTORB, and TAO_SYNCH_MUTEX.
00584 {
00585 if (CORBA::is_nil (this->rt_orb_.in ()))
00586 {
00587 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00588 CORBA::Object::_nil ());
00589 if (CORBA::is_nil (this->rt_orb_.in ()))
00590 {
00591 // Save a reference to the priority mapping manager.
00592 this->rt_orb_ =
00593 this->object_ref_table ().resolve_initial_reference (
00594 TAO_OBJID_RTORB);
00595 }
00596 }
00597
00598 return CORBA::Object::_duplicate (this->rt_orb_.in ());
00599 }
|
|
|
Resolve the TypeCodeFactory DLL.
Definition at line 391 of file ORB_Core.i. References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_typecodefactory_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00392 {
00393 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00394 CORBA::Object::_nil ());
00395 if (CORBA::is_nil (this->typecode_factory_))
00396 {
00397 this->resolve_typecodefactory_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00398 ACE_CHECK_RETURN (CORBA::Object::_nil ());
00399 }
00400 return CORBA::Object::_duplicate (this->typecode_factory_);
00401 }
|
|
|
Obtain and cache the typecode factory object reference.
Definition at line 2427 of file ORB_Core.cpp. References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_ERROR, ACE_TEXT, ACE_THROW, configuration(), TAO_Object_Loader::create_object(), LM_ERROR, ACE_Service_Gestalt::process_directive(), and typecode_factory_. Referenced by resolve_typecodefactory().
02428 {
02429 TAO_Object_Loader *loader =
02430 ACE_Dynamic_Service<TAO_Object_Loader>::instance
02431 (this->configuration (),
02432 ACE_TEXT ("TypeCodeFactory_Loader"));
02433
02434 if (loader == 0)
02435 {
02436 this->configuration ()->process_directive
02437 (ACE_DYNAMIC_SERVICE_DIRECTIVE("TypeCodeFactory",
02438 "TAO_TypeCodeFactory",
02439 "_make_TAO_TypeCodeFactory_Loader",
02440 ""));
02441 loader =
02442 ACE_Dynamic_Service<TAO_Object_Loader>::instance
02443 (this->configuration (),
02444 ACE_TEXT ("TypeCodeFactory_Loader"));
02445
02446 if (loader == 0)
02447 {
02448 ACE_ERROR ((LM_ERROR,
02449 ACE_TEXT ("(%P|%t) Unable to instantiate ")
02450 ACE_TEXT ("a TypeCodeFactory_Loader\n")));
02451 ACE_THROW (CORBA::ORB::InvalidName ());
02452 }
02453 }
02454
02455 this->typecode_factory_ =
02456 loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER);
02457 }
|
|
|
|
Return the RootPOA, or try to load it if not initialized already.
Definition at line 1813 of file ORB_Core.cpp. References CORBA::Object::_duplicate(), CORBA::Object::_nil(), ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, ACE_TEXT_CHAR_TO_TCHAR, adapter_registry_, configuration(), TAO_Adapter_Factory::create(), TAO_Adapter_Registry::insert(), TAO_ORB_Core_Static_Resources::instance(), CORBA::is_nil(), TAO_Adapter::open(), poa_adapter(), TAO_ORB_Core_Static_Resources::poa_factory_directive_, TAO_ORB_Core_Static_Resources::poa_factory_name_, ACE_Service_Gestalt::process_directive(), TAO_Adapter::root(), root_poa_, and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
01814 {
01815 // DCL ..
01816 if (CORBA::is_nil (this->root_poa_.in ()))
01817 {
01818
01819 // Making sure the initialization process in the current thread uses
01820 // the correct service repository (ours), instead of the global one.
01821 ACE_Service_Config_Guard scg (this->configuration ());
01822
01823
01824 TAO_ORB_Core_Static_Resources* static_resources =
01825 TAO_ORB_Core_Static_Resources::instance ();
01826
01827 TAO_Adapter_Factory *factory =
01828 ACE_Dynamic_Service<TAO_Adapter_Factory>::instance
01829 (this->configuration (),
01830 static_resources->poa_factory_name_.c_str());
01831
01832 if (factory == 0)
01833 {
01834 this->configuration()->process_directive (
01835 ACE_TEXT_CHAR_TO_TCHAR (
01836 static_resources->poa_factory_directive_.c_str()));
01837
01838 factory =
01839 ACE_Dynamic_Service<TAO_Adapter_Factory>::instance
01840 (this->configuration (),
01841 static_resources->poa_factory_name_.c_str());
01842 }
01843
01844 if (factory == 0)
01845 {
01846 return CORBA::Object::_nil ();
01847 }
01848
01849 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
01850 monitor,
01851 this->open_lock_,
01852 0);
01853
01854 if (CORBA::is_nil (this->root_poa_.in ()))
01855 {
01856 // @@ Not exception safe
01857 TAO_Adapter *poa_adapter =
01858 factory->create (this);
01859
01860 poa_adapter->open (ACE_ENV_SINGLE_ARG_PARAMETER);
01861 ACE_CHECK_RETURN (CORBA::Object::_nil ());
01862
01863 // @@ Not exception safe
01864 this->root_poa_ =
01865 poa_adapter->root ();
01866
01867 this->adapter_registry_.insert (poa_adapter
01868 ACE_ENV_ARG_PARAMETER);
01869 ACE_CHECK_RETURN (CORBA::Object::_nil ());
01870 }
01871 }
01872
01873 return CORBA::Object::_duplicate (this->root_poa_.in ());
01874 }
|
|
||||||||||||
|
Run the event loop.
Definition at line 2140 of file ORB_Core.cpp. References ACE_DEBUG, ACE_TEXT, TAO_Server_Strategy_Factory::activate_server_connections(), ETIME, TAO_LF_Event_Loop_Thread_Helper::event_loop_return(), ACE_Reactor::handle_events(), has_shutdown(), leader_follower(), lf_strategy(), LM_DEBUG, ACE_Reactor::owner(), reactor(), server_factory_, TAO_debug_level, and ACE_Thread_Manager::wait(). Referenced by TAO_Reactive_Flushing_Strategy::flush_message(), TAO_Reactive_Flushing_Strategy::flush_transport(), TAO_Leader_Follower_Flushing_Strategy::flush_transport(), CORBA::ORB::perform_work(), CORBA::ORB::run(), and TAO_Reactive_Connect_Strategy::wait_i().
02143 {
02144 // ORB::run may be called from a thread, different from the one that
02145 // did the ORB_init, consequently we must establish the Service
02146 // Gestalt, this thread will consider "global"
02147
02148 ACE_Service_Config_Guard use_orbs (this->configuration());
02149
02150 if (TAO_debug_level > 2)
02151 {
02152 ACE_DEBUG ((LM_DEBUG,
02153 ACE_TEXT ("TAO (%P|%t) - ORB_Core::run, ")
02154 ACE_TEXT ("start [%s]\n"),
02155 perform_work?ACE_TEXT("perform_work"):ACE_TEXT("run")));
02156 }
02157
02158 // Fetch the Reactor
02159 ACE_Reactor *r = this->reactor ();
02160
02161 int result = 1;
02162 // 1 to detect that nothing went wrong
02163
02164 // Loop handling client requests until the ORB is shutdown.
02165
02166 // We could use the leader-follower lock to check for the state
02167 // if this variable or use the lock <create_event_loop_lock> in
02168 // the server strategy factory.
02169 // We don't need to do this because we use the Reactor
02170 // mechanisms to shutdown in a thread-safe way.
02171
02172 while (this->has_shutdown () == 0)
02173 {
02174 // Every time we perform an interation we have to become the
02175 // leader again, because it is possible that a client has
02176 // acquired the leader role...
02177 TAO_Leader_Follower &leader_follower =
02178 this->leader_follower ();
02179
02180 TAO_LF_Strategy &lf_strategy =
02181 this->lf_strategy ();
02182
02183 TAO_LF_Event_Loop_Thread_Helper helper (leader_follower,
02184 lf_strategy,
02185 tv);
02186 result = helper.event_loop_return ();
02187 if (result != 0)
02188 {
02189 if (errno == ETIME)
02190 return 0;
02191 else
02192 return result;
02193 }
02194
02195 // Set the owning thread of the Reactor to the one which we're
02196 // currently in. This is necessary b/c it's possible that the
02197 // application is calling us from a thread other than that in which
02198 // the Reactor's CTOR (which sets the owner) was called.
02199 //
02200 // We need to do this on every iteration because the reactor may be
02201 // acquired by one of the client threads in the LF waiting
02202 // strategy
02203 r->owner (ACE_Thread::self ());
02204
02205 if (TAO_debug_level > 2)
02206 {
02207 ACE_DEBUG ((LM_DEBUG,
02208 ACE_TEXT ("TAO (%P|%t) - ORB_Core::run, ")
02209 ACE_TEXT ( "calling handle_events()\n")));
02210 }
02211
02212 result = r->handle_events (tv);
02213
02214 if (TAO_debug_level > 2)
02215 {
02216 ACE_DEBUG ((LM_DEBUG,
02217 ACE_TEXT ("TAO (%P|%t) - ORB_Core::run, ")
02218 ACE_TEXT ("handle_events() returns %d\n"),
02219 result));
02220 }
02221
02222 if (result == -1)
02223 {
02224 // An error, terminate the loop
02225 break;
02226 }
02227 if (result == 0
02228 && tv != 0
02229 && *tv == ACE_Time_Value::zero)
02230 {
02231 // A timeout, terminate the loop...
02232 break;
02233 }
02234
02235 if (perform_work)
02236 {
02237 // This is running on behalf of a perform_work() call,
02238 // The loop should run only once.
02239 break;
02240 }
02241 // Otherwise just continue..
02242 }
02243
02244 if (this->has_shutdown () == 1 &&
02245 this->server_factory_->activate_server_connections ())
02246 this->tm_.wait ();
02247
02248 if (TAO_debug_level > 2)
02249 {
02250 ACE_DEBUG ((LM_DEBUG,
02251 ACE_TEXT ("TAO (%P|%t) - ORB_Core::run, ")
02252 ACE_TEXT ("ends with result = %d\n"),
02253 result));
02254 }
02255
02256 return result;
02257 }
|
|
|
Returns pointer to the server factory.
Definition at line 1798 of file ORB_Core.cpp. References ACE_TEXT, configuration(), and server_factory_. Referenced by TAO_Concurrency_Strategy< SVC_HANDLER >::activate_svc_handler().
01799 {
01800 if (this->server_factory_ == 0)
01801 {
01802 // Look in the service repository for an instance.
01803 this->server_factory_ =
01804 ACE_Dynamic_Service<TAO_Server_Strategy_Factory>::instance
01805 (this->configuration (),
01806 ACE_TEXT ("Server_Strategy_Factory"));
01807 }
01808
01809 return this->server_factory_;
01810 }
|
|
|
Resolve the RT Current flyweight for this ORB. Return server_id string. Definition at line 434 of file ORB_Core.i. References server_id_.
00435 {
00436 return this->server_id_.c_str();
00437 }
|
|
|
Get the Server Request Interceptor adapter. Will not create a new one if not available yet. Definition at line 627 of file ORB_Core.i. References server_request_interceptor_adapter_. Referenced by TAO_ServerRequest::rs_pi_current(), and TAO_ServerRequest::~TAO_ServerRequest().
00628 {
00629 return this->server_request_interceptor_adapter_;
00630 }
|
|
|
Get the Server Request Interceptor adapter. If not created, this method will try to create one if needed. Definition at line 3420 of file ORB_Core.cpp. References ACE_GUARD_RETURN, ACE_TEXT, configuration(), TAO_ServerRequestInterceptor_Adapter_Factory::create(), server_request_interceptor_adapter_, and TAO_SYNCH_MUTEX. Referenced by add_interceptor().
03421 {
03422 if (this->server_request_interceptor_adapter_ == 0)
03423 {
03424 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
03425 ace_mon,
03426 this->lock_,
03427 0);
03428
03429 if (this->server_request_interceptor_adapter_ == 0)
03430 {
03431 TAO_ServerRequestInterceptor_Adapter_Factory *factory =
03432 ACE_Dynamic_Service<TAO_ServerRequestInterceptor_Adapter_Factory>::instance
03433 (this->configuration (),
03434 ACE_TEXT ("ServerRequestInterceptor_Adapter_Factory"));
03435
03436 if (factory)
03437 {
03438 this->server_request_interceptor_adapter_ =
03439 factory->create ();
03440 }
03441 }
03442 }
03443
03444 return this->server_request_interceptor_adapter_;
03445 }
|
|
||||||||||||||||
|
Call the service layers with the Service Context to check whether they would like to add something to the list. Definition at line 1768 of file ORB_Core.cpp. References ACE_CHECK, ACE_ENV_ARG_PARAMETER, protocols_hooks_, and TAO_Protocols_Hooks::rt_service_context(). Referenced by TAO::Remote_Invocation::init_target_spec().
01773 {
01774 // @NOTE: Can use Interceptors instead..
01775 this->protocols_hooks_->rt_service_context (stub,
01776 service_context,
01777 restart
01778 ACE_ENV_ARG_PARAMETER);
01779 ACE_CHECK;
01780 }
|
|
||||||||||||
|
The loaded service in the ORB_Core would determine if the profile reselection is going to be made by the services or not. If the services do make the reselection they would return the selected profile through . The reselction is for the multi-profile IORS. Definition at line 100 of file ORB_Core.i. References ft_service_, TAO_Service_Callbacks::reselect_profile(), and TAO_Fault_Tolerance_Service::service_callback().
00102 {
00103 CORBA::Boolean retval = 0;
00104 // @@ If different services have the same feature we may want to
00105 // prioritise them here. We need to decide here whose selection of
00106 // profile is more important.
00107 if (this->ft_service_.service_callback ())
00108 {
00109 retval =
00110 this->ft_service_.service_callback ()->reselect_profile (stub,
00111 profile);
00112 }
00113 return retval;
00114 }
|
|
||||||||||||
|
The loaded service in the ORB_Core would determine if the profile selection is going to be made by the services or not. If the services do make the selection they would return the selected profile through . Definition at line 83 of file ORB_Core.i. References ft_service_, TAO_Service_Callbacks::select_profile(), and TAO_Fault_Tolerance_Service::service_callback().
00085 {
00086 CORBA::Boolean retval = 0;
00087 // @@ If different services have the same feature we may want to
00088 // prioritise them here. We need to decide here whose selection of
00089 // profile is more important.
00090 if (this->ft_service_.service_callback ())
00091 {
00092 retval =
00093 this->ft_service_.service_callback ()->select_profile (&mprofile,
00094 profile);
00095 }
00096 return retval;
00097 }
|
|
||||||||||||
|
Raise a comm failure exception if a service is not loaded, else delegate to the service to see what the service has to do for this case. Definition at line 1728 of file ORB_Core.cpp. References ACE_ENV_ARG_PARAMETER, ACE_THROW_RETURN, ft_service_, TAO_Fault_Tolerance_Service::service_callback(), and TAO_INVOCATION_RECV_REQUEST_MINOR_CODE.
01732 {
01733 if (this->ft_service_.service_callback ())
01734 {
01735 return this->ft_service_.service_callback ()->
01736 raise_comm_failure (clist,
01737 profile
01738 ACE_ENV_ARG_PARAMETER);
01739 }
01740
01741 ACE_THROW_RETURN (CORBA::COMM_FAILURE (
01742 CORBA::SystemException::_tao_minor_code (
01743 TAO_INVOCATION_RECV_REQUEST_MINOR_CODE,
01744 errno),
01745 CORBA::COMPLETED_MAYBE),
01746 TAO::TAO_INVOKE_SYSTEM_EXCEPTION);
01747 }
|
|
||||||||||||
|
Raise a transient failure exception if a service is not loaded, else delegate to the service to see what the service has to do for this case. Definition at line 1751 of file ORB_Core.cpp. References ACE_ENV_ARG_PARAMETER, ft_service_, TAO_Service_Callbacks::raise_transient_failure(), and TAO_Fault_Tolerance_Service::service_callback().
01755 {
01756 if (this->ft_service_.service_callback ())
01757 {
01758 return
01759 this->ft_service_.service_callback ()->raise_transient_failure (clist,
01760 profile
01761 ACE_ENV_ARG_PARAMETER);
01762 }
01763
01764 return TAO::TAO_INVOKE_FAILURE;
01765 }
|
|
|
Search the Dynamic service list for well known services that has callbacks which can be dynamically loaded. Definition at line 1717 of file ORB_Core.cpp. References ft_service_, and TAO_Fault_Tolerance_Service::init().
01718 {
01719 // We (should) know what are the services that would need
01720 // callbacks. So, what we do is go through the Service Configurator
01721 // list for looking at the services that we want to load.
01722 this->ft_service_.init (this);
01723
01724 // @@ Other service callbacks can be added here
01725 }
|
|
|
Sets the value of TAO_ORB_Core::collocation_resolver_name_.
Definition at line 1423 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::collocation_resolver_name_, and TAO_ORB_Core_Static_Resources::instance().
01424 {
01425 TAO_ORB_Core_Static_Resources::instance ()->collocation_resolver_name_ =
01426 collocation_resolver_name;
01427 }
|
|
|
Set the ORB related to the orb_id as the default ORB and not the ORB that is first binded in the ORB Table Definition at line 210 of file ORB_Core.i. References TAO::ORB_Table::instance(), and TAO::ORB_Table::set_default().
00211 {
00212 TAO::ORB_Table * const table = TAO::ORB_Table::instance ();
00213 table->set_default (orb_id);
00214 }
|
|
||||||||||||
|
Pointer to the list of protocol loaded into this ORB instance. Helper method to hold the common code part for -ORBEndpoint and -ORBListenEndpoint options. Definition at line 2646 of file ORB_Core.cpp. References ACE_ERROR, ACE_TEXT, ACE_TEXT_CHAR_TO_TCHAR, ACE_THROW_RETURN, TAO_ORB_Parameters::add_endpoints(), LM_ERROR, orb_params(), and TAO_ORB_CORE_INIT_LOCATION_CODE.
02649 {
02650 if (this->orb_params ()->add_endpoints (lane,
02651 endpoints) != 0)
02652 {
02653 ACE_ERROR ((LM_ERROR,
02654 ACE_TEXT ("(%P|%t)\n")
02655 ACE_TEXT ("Invalid endpoint(s) specified:\n%s\n"),
02656 ACE_TEXT_CHAR_TO_TCHAR(endpoints.c_str ())));
02657 ACE_THROW_RETURN (CORBA::BAD_PARAM (
02658 CORBA::SystemException::_tao_minor_code (
02659 TAO_ORB_CORE_INIT_LOCATION_CODE,
02660 EINVAL),
02661 CORBA::COMPLETED_NO),
02662 -1);
02663 }
02664
02665 return 0;
02666 }
|
|
|
Sets the value of TAO_ORB_Core::endpoint_selector_factory_.
Definition at line 1683 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::endpoint_selector_factory_name_, and TAO_ORB_Core_Static_Resources::instance().
01684 {
01685 TAO_ORB_Core_Static_Resources::instance ()->endpoint_selector_factory_name_ =
01686 endpoint_selector_factory_name;
01687 }
|
|
|
Sets the value of TAO_ORB_Core::gui_resource_factory_. Sets the value of gui_resource_factory in TSS. ORB_Core is responsible for releasing this factory if needed. Definition at line 1444 of file ORB_Core.cpp. References ACE_DEBUG, TAO_TSS_Resources::gui_resource_factory_, TAO_TSS_Resources::instance(), and LM_WARNING. Referenced by TAO::FlResource_Loader::FlResource_Loader(), TAO::QtResource_Loader::QtResource_Loader(), TAO::TkResource_Loader::TkResource_Loader(), and TAO::XtResource_Loader::XtResource_Loader().
01445 {
01446 if (TAO_TSS_Resources::instance ()->gui_resource_factory_ != 0)
01447 {
01448
01449 ACE_DEBUG ((LM_WARNING,
01450 "TAO (%P|%t) - Deleting old gui_resource_factory.\n"));
01451 delete TAO_TSS_Resources::instance ()->gui_resource_factory_;
01452 }
01453
01454 TAO_TSS_Resources::instance ()->gui_resource_factory_ = gui_resource_factory;
01455 }
|
|
||||||||||||
|
Sets the name of the POA factory and the dynamic service configurator directive to load it if needed. Definition at line 1667 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), TAO_ORB_Core_Static_Resources::poa_factory_directive_, and TAO_ORB_Core_Static_Resources::poa_factory_name_.
01669 {
01670 TAO_ORB_Core_Static_Resources::instance ()->poa_factory_name_ =
01671 poa_factory_name;
01672 TAO_ORB_Core_Static_Resources::instance ()->poa_factory_directive_ =
01673 poa_factory_directive;
01674 }
|
|
|
Sets the value of TAO_ORB_Core::protocols_hooks_.
Definition at line 1709 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::protocols_hooks_name_.
01710 {
01711 // Is synchronization necessary?
01712 TAO_ORB_Core_Static_Resources::instance ()->protocols_hooks_name_ =
01713 protocols_hooks_name;
01714 }
|
|
|
Sets the value of TAO_ORB_Core::resource_factory_.
Definition at line 1437 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::resource_factory_name_.
01438 {
01439 TAO_ORB_Core_Static_Resources::instance ()->resource_factory_name_ =
01440 resource_factory_name;
01441 }
|
|
|
Sets the value of TAO_ORB_Core::stub_factory_name_.
Definition at line 1430 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::stub_factory_name_.
01431 {
01432 TAO_ORB_Core_Static_Resources::instance ()->stub_factory_name_ =
01433 stub_factory_name;
01434 }
|
|
|
Definition at line 2987 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and Sync_Scope_Hook.
02988 {
02989 TAO_ORB_Core_Static_Resources::instance ()-> sync_scope_hook_ = hook;
02990 }
|
|
|
Sets the value of TAO_ORB_Core::thread_lane_resources_manager_factory_name_ Definition at line 1416 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::thread_lane_resources_manager_factory_name_.
01417 {
01418 TAO_ORB_Core_Static_Resources::instance ()->thread_lane_resources_manager_factory_name_ =
01419 thread_lane_resources_manager_factory_name;
01420 }
|
|
|
Definition at line 3017 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), Timeout_Hook, and TAO_ORB_Core_Static_Resources::timeout_hook_.
03018 {
03019 // Saving the hook pointer so that we can use it later when needed.
03020 TAO_ORB_Core_Static_Resources::instance ()->timeout_hook_ = hook;
03021 }
|
|
||||||||||||
|
Set the TSS resource at the given slot. Returns 0 on success, and -1 on failure. Definition at line 307 of file ORB_Core.i. References get_tss_resources(), TAO_ORB_Core_TSS_Resources::orb_core_, ACE_Array_Base< void * >::size(), TAO_Cleanup_Func_Registry::size(), TAO_ORB_Core_TSS_Resources::ts_objects_, and tss_cleanup_funcs_.
00308 {
00309 TAO_ORB_Core_TSS_Resources *tss_resources =
00310 this->get_tss_resources ();
00311
00312 // The number of allocated slots is equal to the number of
00313 // registered TSS cleanup functions, *not* the size of the array in
00314 // the ORB core TSS resources.
00315 if (slot_id >= this->tss_cleanup_funcs_.size ())
00316 {
00317 errno = EINVAL;
00318 return -1;
00319 }
00320
00321 // If the TSS array isn't large enough, then increase its size.
00322 // We're guaranteed not to exceed the number of allocated slots by
00323 // the above check.
00324 const size_t old_size = tss_resources->ts_objects_.size ();
00325 const size_t new_size = slot_id + 1;
00326 if (slot_id >= old_size
00327 && tss_resources->ts_objects_.size (new_size) != 0)
00328 return -1;
00329
00330 // Initialize intermediate array elements to zero, since they
00331 // haven't been initialized yet. This ensures that garbage is not
00332 // returned when accessing any of those elements at a later point in
00333 // time.
00334 for (size_t i = old_size; i < slot_id; ++i)
00335 tss_resources->ts_objects_[i] = 0;
00336
00337 tss_resources->ts_objects_[slot_id] = ts_object;
00338
00339 // Make sure the ORB core pointer is set in the ORB core's TSS
00340 // resources so that the TSS cleanup functions stored in the ORB
00341 // core can be invoked.
00342 tss_resources->orb_core_ = this;
00343
00344 return 0;
00345 }
|
|
|
End the event loop.
Definition at line 2261 of file ORB_Core.cpp. References CORBA::Object::_nil(), ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_GUARD, adapter_registry_, ACE_Thread_Manager::cancel_all(), TAO_Adapter_Registry::check_close(), TAO_Thread_Lane_Resources_Manager::cleanup_rw_transports(), TAO_Adapter_Registry::close(), TAO_Object_Ref_Table::destroy(), has_shutdown(), has_shutdown_, object_ref_table_, pi_current_, CORBA::release(), TAO_Thread_Lane_Resources_Manager::shutdown_reactor(), TAO_SYNCH_MUTEX, thr_mgr(), thread_lane_resources_manager(), valuetype_adapter_, and ACE_Thread_Manager::wait(). Referenced by destroy(), fini(), and CORBA::ORB::shutdown().
02263 {
02264 {
02265 ACE_GUARD (TAO_SYNCH_MUTEX, monitor, this->lock_);
02266
02267 if (this->has_shutdown () != 0)
02268 return;
02269
02270 // Check if we are on the right state, i.e. do not accept
02271 // shutdowns with the 'wait_for_completion' flag set in the middle
02272 // of an upcall (because those deadlock).
02273 this->adapter_registry_.check_close (wait_for_completion
02274 ACE_ENV_ARG_PARAMETER);
02275 ACE_CHECK;
02276
02277 // Set the 'has_shutdown' flag, so any further attempt to shutdown
02278 // becomes a noop.
02279 this->has_shutdown_ = 1;
02280
02281 // need to release the mutex, because some of the shutdown
02282 // operations invoke application code, that could (and in practice
02283 // does!) callback into ORB Core code.
02284 }
02285
02286 this->adapter_registry_.close (wait_for_completion
02287 ACE_ENV_ARG_PARAMETER);
02288 ACE_CHECK;
02289
02290 // Shutdown reactor.
02291 this->thread_lane_resources_manager ().shutdown_reactor ();
02292
02293 // Cleanup transports that use the RW strategies
02294 this->thread_lane_resources_manager ().cleanup_rw_transports ();
02295
02296 // Grab the thread manager
02297 ACE_Thread_Manager *tm = this->thr_mgr ();
02298
02299 // Try to cancel all the threads in the ORB.
02300 tm->cancel_all ();
02301
02302 // If <wait_for_completion> is set, wait for all threads to exit.
02303 if (wait_for_completion != 0)
02304 tm->wait ();
02305
02306 // Explicitly destroy the valuetype adapter
02307 delete this->valuetype_adapter_;
02308 this->valuetype_adapter_ = 0;
02309
02310 // Explicitly destroy the object reference table since it
02311 // contains references to objects, which themselves may contain
02312 // reference to this ORB.
02313 this->object_ref_table_.destroy ();
02314
02315 #if (TAO_HAS_INTERCEPTORS == 1)
02316 CORBA::release (this->pi_current_);
02317 this->pi_current_ = CORBA::Object::_nil ();
02318 #endif /* TAO_HAS_INTERCEPTORS == 1 */
02319 }
|
|
|
Returns a pointer to the Stub factory.
Definition at line 1648 of file ORB_Core.cpp. References ACE_CString, ACE_TEXT_CHAR_TO_TCHAR, configuration(), TAO_ORB_Core_Static_Resources::instance(), stub_factory_, and TAO_ORB_Core_Static_Resources::stub_factory_name_. Referenced by create_stub().
01649 {
01650 // Check if there is a cached reference.
01651 if (this->stub_factory_ != 0)
01652 return this->stub_factory_;
01653
01654 // If not, look in the service repository for an instance.
01655 const ACE_CString &stub_factory_name =
01656 TAO_ORB_Core_Static_Resources::instance ()->stub_factory_name_;
01657
01658 this->stub_factory_ =
01659 ACE_Dynamic_Service<TAO_Stub_Factory>::instance
01660 (this->configuration (),
01661 ACE_TEXT_CHAR_TO_TCHAR (stub_factory_name.c_str()));
01662
01663 return this->stub_factory_;
01664 }
|
|
|
Get the ACE_Thread_Manager.
Definition at line 180 of file ORB_Core.i. Referenced by fini(), TAO_IIOP_Connector::open(), and shutdown().
00181 {
00182 return &this->tm_;
00183 }
|
|
|
|
Returns the value used by the server threads to poll the shutdown flag. If the return value is zero then the server threads block forever. Definition at line 360 of file ORB_Core.i. Referenced by TAO_Connection_Handler::svc_i().
00361 {
00362 timeout = this->thread_per_connection_timeout_;
00363 return this->thread_per_connection_use_timeout_;
00364 }
|
|
|
This allocator is always global and has no locks. It is intended for allocating the buffers used to queue messages in transports. Definition at line 2828 of file ORB_Core.cpp. References lane_resources(), and TAO_Thread_Lane_Resources::transport_message_buffer_allocator().
02829 {
02830 return this->lane_resources ().transport_message_buffer_allocator ();
02831 }
|
|
|
Return the underlying TSS cleanup function registry.
Definition at line 348 of file ORB_Core.i. References tss_cleanup_funcs_.
00349 {
00350 return &(this->tss_cleanup_funcs_);
00351 }
|
|
|
Gets the value of TAO_ORB_Core::typecodefactory_adapter_name_.
Definition at line 1488 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::typecodefactory_adapter_name_.
01489 {
01490 return TAO_ORB_Core_Static_Resources::instance ()->typecodefactory_adapter_name_.c_str();
01491 }
|
|
|
Sets the value of TAO_ORB_Core::typecodefactory_adapter_name_.
Definition at line 1482 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::typecodefactory_adapter_name_.
01483 {
01484 TAO_ORB_Core_Static_Resources::instance ()->typecodefactory_adapter_name_ = name;
01485 }
|
|
|
Definition at line 242 of file ORB_Core.i. References use_global_collocation_.
00243 {
00244 return this->use_global_collocation_;
00245 }
|
|
|
Definition at line 236 of file ORB_Core.i. References use_global_collocation_. Referenced by is_collocation_enabled().
00237 {
00238 this->use_global_collocation_ = opt;
00239 }
|
|
|
Do we attempt to register with the Implementation Repository.
Definition at line 379 of file ORB_Core.i. References use_implrepo_.
00380 {
00381 return use_implrepo_;
00382 }
|
|
|
Return the valuetype adapter.
Definition at line 3450 of file ORB_Core.cpp. References ACE_ANY_EXCEPTION, ACE_CATCHANY, ACE_CHECK_RETURN, ACE_DECLARE_NEW_CORBA_ENV, ACE_ENDTRY, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, ACE_PRINT_EXCEPTION, ACE_THROW_RETURN, ACE_TRY, ACE_TRY_CHECK, TAO_Valuetype_Adapter_Factory::create(), ACE_Dynamic_Service< TYPE >::instance(), TAO_SYNCH_MUTEX, valuetype_adapter_, and valuetype_adapter_factory_name(). Referenced by CORBA::ORB::lookup_value_factory(), CORBA::ORB::register_value_factory(), and CORBA::ORB::unregister_value_factory().
03451 {
03452 if (this->valuetype_adapter_ == 0)
03453 {
03454 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
03455 ace_mon,
03456 this->lock_,
03457 0);
03458
03459 if (this->valuetype_adapter_ == 0)
03460 {
03461 ACE_DECLARE_NEW_CORBA_ENV;
03462 ACE_TRY
03463 {
03464 TAO_Valuetype_Adapter_Factory * vt_ap_factory =
03465 ACE_Dynamic_Service<TAO_Valuetype_Adapter_Factory>::instance (
03466 TAO_ORB_Core::valuetype_adapter_factory_name ()
03467 );
03468
03469 if (vt_ap_factory)
03470 {
03471 this->valuetype_adapter_ =
03472 vt_ap_factory->create (ACE_ENV_SINGLE_ARG_PARAMETER);
03473 ACE_TRY_CHECK;
03474 }
03475 }
03476 ACE_CATCHANY
03477 {
03478 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
03479 "Cannot initialize the "
03480 "valuetype_adapter \n");
03481 }
03482 ACE_ENDTRY;
03483 ACE_CHECK_RETURN(0);
03484 }
03485
03486 if (this->valuetype_adapter_ == 0)
03487 {
03488 ACE_THROW_RETURN (CORBA::INTERNAL (),
03489 0);
03490 }
03491 }
03492
03493 return this->valuetype_adapter_;
03494 }
|
|
|
Gets the value of TAO_ORB_Core::valuetype_adapter_factory_name.
Definition at line 1512 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::valuetype_adapter_factory_name_.
01513 {
01514 return TAO_ORB_Core_Static_Resources::instance ()->valuetype_adapter_factory_name_.c_str();
01515 }
|
|
|
Sets the value of TAO_ORB_Core::valuetype_adapter_factory_name.
Definition at line 1506 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::valuetype_adapter_factory_name_. Referenced by valuetype_adapter().
01507 {
01508 TAO_ORB_Core_Static_Resources::instance ()->valuetype_adapter_factory_name_ = name;
01509 }
|
|
||||||||||||||||||||
|
|
|
|
Definition at line 160 of file ORB_Core.h. |
|
|
The list of Adapters used in this ORB.
Definition at line 1167 of file ORB_Core.h. Referenced by adapter_registry(), poa_adapter(), resolve_ior_table_i(), root_poa(), and shutdown(). |
|
|
BiDirectional GIOP factory.
Definition at line 1256 of file ORB_Core.h. Referenced by load_policy_validators(). |
|
|
Bir Dir GIOP policy value.
Definition at line 1259 of file ORB_Core.h. Referenced by bidir_giop_policy(). |
|
|
Handle to the factory for Client-side strategies.
Definition at line 1118 of file ORB_Core.h. Referenced by client_factory(). |
|
|
The adapter for handling client request interceptors.
Definition at line 1239 of file ORB_Core.h. Referenced by add_interceptor(), clientrequestinterceptor_adapter(), clientrequestinterceptor_adapter_i(), and destroy_interceptors(). |
|
|
The cached IOR for the CodecFactory DLL.
Definition at line 1062 of file ORB_Core.h. Referenced by fini(), and resolve_codecfactory_i(). |
|
|
Code Set Manager - points to service object in the service repo.
Definition at line 1265 of file ORB_Core.h. |
|
|
Definition at line 1042 of file ORB_Core.h. Referenced by collocation_resolver(). |
|
|
Default collocation policy. This should never be ORB_CONTROL.
Definition at line 1142 of file ORB_Core.h. Referenced by get_collocation_strategy(). |
|
|
ORB's service configuration.
Definition at line 1268 of file ORB_Core.h. |
|
|
The data block reference counts are locked using this mutex.
Definition at line 1176 of file ORB_Core.h. Referenced by create_input_cdr_data_block(), and locking_strategy(). |
|
|
The default policies.
Definition at line 1151 of file ORB_Core.h. Referenced by get_default_policies(), and ~TAO_ORB_Core(). |
|
|
This strategy will not queue by default and not flush.
Definition at line 1217 of file ORB_Core.h. Referenced by default_transport_queueing_strategy(), and ~TAO_ORB_Core(). |
|
|
This strategy will buffer messages.
Definition at line 1208 of file ORB_Core.h. Referenced by delayed_transport_queueing_strategy(), and ~TAO_ORB_Core(). |
|
|
The cached object reference for the DynAnyFactory.
Definition at line 1065 of file ORB_Core.h. Referenced by fini(), and resolve_dynanyfactory_i(). |
|
|
This strategy will buffer messages.
Definition at line 1205 of file ORB_Core.h. Referenced by eager_transport_queueing_strategy(), and ~TAO_ORB_Core(). |
|
|
Definition at line 1200 of file ORB_Core.h. Referenced by endpoint_selector_factory(). |
|
|
This strategy will not queue by default, but will flush the queue each time Definition at line 1212 of file ORB_Core.h. Referenced by flush_transport_queueing_strategy(), and ~TAO_ORB_Core(). |
|
|
Hold the flushing strategy.
Definition at line 1262 of file ORB_Core.h. Referenced by flushing_strategy(), and ~TAO_ORB_Core(). |
|
|
Fault Tolerant service hook.
Definition at line 1129 of file ORB_Core.h. Referenced by fault_tolerance_service(), hash_service(), is_profile_equivalent(), object_is_nil(), reset_service_profile_flags(), service_profile_reselection(), service_profile_selection(), service_raise_comm_failure(), service_raise_transient_failure(), and services_callbacks_init(). |
|
|
Flag which denotes that the ORB has been shutdown.
Definition at line 1186 of file ORB_Core.h. Referenced by has_shutdown(), and shutdown(). |
|
|
The cached IOR for the Implementation Repository.
Definition at line 1050 of file ORB_Core.h. Referenced by fini(), and implrepo_service(). |
|
|
Flag for whether to put the ImR endpoints into our object refs.
Definition at line 1056 of file ORB_Core.h. Referenced by imr_endpoints_in_ior(). |
|
|
Return InitRefMap to find if a particular object id is present.
Definition at line 1098 of file ORB_Core.h. Referenced by init_ref_map(), and list_initial_references(). |
|
|
IORInterceptor adapter.
Definition at line 1247 of file ORB_Core.h. Referenced by add_interceptor(), destroy_interceptors(), and ior_interceptor_adapter(). |
|
|
The cached object reference for the IORManipulataion.
Definition at line 1068 of file ORB_Core.h. Referenced by fini(), and resolve_iormanipulation_i(). |
|
|
The cached object reference for the IORTable.
Definition at line 1071 of file ORB_Core.h. Referenced by fini(), and resolve_ior_table_i(). |
|
|
Synchronize internal state...
Definition at line 1038 of file ORB_Core.h. |
|
|
Table that stores the object key instead of caching one per-profile.
Definition at line 1106 of file ORB_Core.h. Referenced by fini(), and object_key_table(). |
|
|
Table that maps object key/name to (de-stringified) object reference. It is needed for supporting local objects in the resolve_initial_references() mechanism. Definition at line 1103 of file ORB_Core.h. Referenced by list_initial_references(), object_ref_table(), and shutdown(). |
|
|
Flag which denotes that the open method was called.
Definition at line 1198 of file ORB_Core.h. |
|
|
Mutual exclusion for calling open.
Definition at line 1195 of file ORB_Core.h. |
|
|
TRUE if we want to take advantage of collocation optimization in this ORB. Definition at line 1135 of file ORB_Core.h. Referenced by optimize_collocation_objects(). |
|
|
Definition at line 1087 of file ORB_Core.h. Referenced by implrepo_service(), orb(), and ~TAO_ORB_Core(). |
|
|
Parameters used by the ORB.
Definition at line 1095 of file ORB_Core.h. Referenced by orb_params(). |
|
|
The ORBid for this ORB.
Definition at line 1109 of file ORB_Core.h. |
|
|
Registry containing all orb initializers.
Definition at line 1226 of file ORB_Core.h. Referenced by orbinitializer_registry(), orbinitializer_registry_i(), and ~TAO_ORB_Core(). |
|
|
The IOR parser registry.
Definition at line 1253 of file ORB_Core.h. Referenced by parser_registry(). |
|
|
Cached pointer/reference to the PICurrent object. A pointer/reference to the PICurrent object is cached in the ORB Core since it is accessed in the critical path (i.e. the request invocation path). Caching it prevents additional overhead to due object resolution from occurring. Definition at line 1236 of file ORB_Core.h. Referenced by pi_current(), resolve_picurrent_i(), and shutdown(). |
|
|
An optimization for the POA.
Definition at line 1170 of file ORB_Core.h. Referenced by poa_adapter(). |
|
|
POA current. Definition at line 1164 of file ORB_Core.h. Referenced by resolve_poa_current_i(). |
|
|
Policy current.
Definition at line 1154 of file ORB_Core.h. Referenced by policy_current(), and ~TAO_ORB_Core(). |
|
|
Registry containing all registered policy factories.
Definition at line 1223 of file ORB_Core.h. Referenced by policy_factory_registry(), policy_factory_registry_i(), and ~TAO_ORB_Core(). |
|
|
The Policy_Manager for this ORB.
Definition at line 1148 of file ORB_Core.h. Referenced by policy_manager(), and ~TAO_ORB_Core(). |
|
|
Definition at line 1046 of file ORB_Core.h. |
|
|
Handle to the factory for protocols_hooks_..
Definition at line 559 of file ORB_Core.h. Referenced by get_protocols_hooks(), and service_context_list(). |
|
|
Number of outstanding references to this object.
Definition at line 1220 of file ORB_Core.h. |
|
|
The request dispatching strategy.
Definition at line 1159 of file ORB_Core.h. Referenced by request_dispatcher(), and ~TAO_ORB_Core(). |
|
|
Handle to the factory for resource information..
Definition at line 1112 of file ORB_Core.h. Referenced by resource_factory(). |
|
|
Object reference to the root POA. It will eventually be the object reference returned by calls to CORBA::ORB::resolve_initial_references ("RootPOA"). Definition at line 1092 of file ORB_Core.h. Referenced by root_poa(). |
|
|
The cached object reference for the RTCORBA::Current interface.
Definition at line 1077 of file ORB_Core.h. |
|
|
The cached object reference for the RTCORBA::RTORB.
Definition at line 1074 of file ORB_Core.h. Referenced by resolve_rt_orb(). |
|
|
Handle to the factory for Server-side strategies.
Definition at line 1121 of file ORB_Core.h. Referenced by run(), and server_factory(). |
|
|
The server_id_ that was passed via -ORBServerId option.
Definition at line 1115 of file ORB_Core.h. Referenced by server_id(). |
|
|
The adapter for handling server request interceptors.
Definition at line 1242 of file ORB_Core.h. Referenced by add_interceptor(), destroy_interceptors(), serverrequestinterceptor_adapter(), and serverrequestinterceptor_adapter_i(). |
|
|
Definition at line 1044 of file ORB_Core.h. Referenced by stub_factory(). |
|
|
Definition at line 1040 of file ORB_Core.h. Referenced by fini(), thread_lane_resources_manager(), and ~TAO_ORB_Core(). |
|
|
Definition at line 1191 of file ORB_Core.h. |
|
|
Definition at line 1190 of file ORB_Core.h. |
|
|
The Thread Manager.
Definition at line 1173 of file ORB_Core.h. |
|
|
TSS Object cleanup functions. These correspond to the TSS objects stored in TAO's TSS resources. Definition at line 1180 of file ORB_Core.h. Referenced by add_tss_cleanup_func(), set_tss_resource(), and tss_cleanup_funcs(). |
|
|
The cached IOR for the TypeCodeFactory DLL.
Definition at line 1059 of file ORB_Core.h. Referenced by fini(), and resolve_typecodefactory_i(). |
|
|
TRUE if we want to consider all ORBs in this address space collocated. Definition at line 1139 of file ORB_Core.h. Referenced by use_global_collocation(). |
|
|
Flag for whether the implrepo support is enabled or not.
Definition at line 1053 of file ORB_Core.h. Referenced by implrepo_service(), and use_implrepo(). |
|
|
Definition at line 1033 of file ORB_Core.h. |
|
|
Pointer to the valuetype adapter.
Definition at line 1250 of file ORB_Core.h. Referenced by shutdown(), and valuetype_adapter(). |
1.3.6