#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, ACE_Service_Gestalt *g) | |
Constructor. | |
TAO_ORB_Parameters * | orb_params (void) |
Accessor for the ORB parameters. | |
TAO_Connector_Registry * | connector_registry (void) |
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 (void) |
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__. | |
TAO_Network_Priority_Protocols_Hooks * | get_network_priority_protocols_hooks (void) |
Gets the value of TAO_ORB_Core::network_priority_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 | set_timeout_hook (Timeout_Hook hook) |
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) |
void | set_sync_scope_hook (Sync_Scope_Hook hook) |
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. | |
bool | has_shutdown (void) const |
Get the shutdown flag value. | |
void | destroy (void) |
Shutdown the ORB and free resources. | |
void | check_shutdown (void) |
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 (void) |
Resolve the TypeCodeFactory DLL. | |
CORBA::Object_ptr | resolve_picurrent (void) |
Resolve the PICurrent. | |
CORBA::Object_ptr | resolve_poa_current (void) |
Resolve POA Current. | |
CORBA::Object_ptr | resolve_codecfactory (void) |
Resolve the CodecFactory DLL. | |
CORBA::Object_ptr | resolve_compression_manager (void) |
Resolve the Compression DLL. | |
CORBA::Object_ptr | resolve_dynanyfactory (void) |
Resolve the Dynamic Any Factory. | |
CORBA::Object_ptr | resolve_ior_manipulation (void) |
Resolve the IOR Manipulation reference for this ORB. | |
CORBA::Object_ptr | resolve_ior_table (void) |
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 (void) |
List all the service known by the ORB. | |
unsigned long | _incr_refcnt (void) |
Reference counting... | |
unsigned long | _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. | |
void | set_eager_transport_queueing_strategy (TAO::Transport_Queueing_Strategy *strategy) |
void | set_delayed_transport_queueing_strategy (TAO::Transport_Queueing_Strategy *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 (const TAO_MProfile &mprofile, TAO_Profile *&profile) |
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_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_network_priority_protocols_hooks (const char *network_priority_protocols_hooks_name) |
Sets the value of TAO_ORB_Core::network_priority_protocols_hooks_. | |
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 | connection_timeout_hook (Timeout_Hook hook) |
Define the Timeout_Hook signature. | |
Public Attributes | |
TAO_Protocols_Hooks * | protocols_hooks_ |
Handle to the factory for protocols_hooks_.. | |
TAO_Network_Priority_Protocols_Hooks * | network_priority_protocols_hooks_ |
Handle to the factory for network_priority_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 (void) |
Obtain and cache the typecode factory object reference. | |
void | resolve_poa_current_i (void) |
Obtain and cache the poa current. | |
void | resolve_picurrent_i (void) |
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 (void) |
Obtain and cache the codec factory object reference. | |
void | resolve_compression_manager_i (void) |
Obtain and cache the compression manager object reference. | |
void | resolve_dynanyfactory_i (void) |
Obtain and cache the dynamic any factory object reference. | |
void | resolve_iormanipulation_i (void) |
Obtain and cache the IORManipulation factory object reference. | |
void | services_callbacks_init (void) |
void | destroy_interceptors (void) |
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 | compression_manager_ |
The cached IOR for the Compression 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_ |
bool | has_shutdown_ |
Flag which denotes that the ORB has been shutdown. | |
TAO_SYNCH_MUTEX | open_lock_ |
Mutual exclusion for calling open. | |
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. | |
ACE_Atomic_Op< TAO_SYNCH_MUTEX, unsigned long > | 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, received from the Resource Factory. | |
ACE_Service_Gestalt * | config_ |
ORB's service configuration. | |
Sync_Scope_Hook | sync_scope_hook_ |
The hook to be set for the SyncScopePolicy. | |
Timeout_Hook | timeout_hook_ |
The hook to be set for the RelativeRoundtripTimeoutPolicy. | |
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 (void) |
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 &) |
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 *) |
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 849 of file ORB_Core.h. |
|
Definition at line 526 of file ORB_Core.h. Referenced by call_sync_scope_hook(), and set_sync_scope_hook(). |
|
Define the Timeout_Hook signature.
Definition at line 467 of file ORB_Core.h. Referenced by call_timeout_hook(), connection_timeout(), connection_timeout_hook(), and set_timeout_hook(). |
|
Definition at line 223 of file ORB_Core.h.
00224 { 00225 /// Indicate object should refer to ORB for either one of the 00226 /// following strategies. 00227 ORB_CONTROL, 00228 00229 /// Collocated calls will go thru POA. 00230 THRU_POA, 00231 00232 /// Collocated calls invoke operation on Servant directly. 00233 DIRECT 00234 }; |
|
Constructor.
Definition at line 183 of file ORB_Core.cpp. References ACE_NEW, 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.
00185 : protocols_hooks_ (0), 00186 network_priority_protocols_hooks_ (0), 00187 #if TAO_USE_LOCAL_MEMORY_POOL == 1 00188 use_local_memory_pool_ (true), 00189 #else 00190 use_local_memory_pool_ (false), 00191 #endif 00192 lock_ (), 00193 thread_lane_resources_manager_ (0), 00194 collocation_resolver_ (0), 00195 stub_factory_ (0), 00196 protocol_factories_ (0), 00197 implrepo_service_ (CORBA::Object::_nil ()), 00198 use_implrepo_ (0), 00199 imr_endpoints_in_ior_ (1), 00200 typecode_factory_ (CORBA::Object::_nil ()), 00201 codec_factory_ (CORBA::Object::_nil ()), 00202 compression_manager_ (CORBA::Object::_nil ()), 00203 dynany_factory_ (CORBA::Object::_nil ()), 00204 ior_manip_factory_ (CORBA::Object::_nil ()), 00205 ior_table_ (CORBA::Object::_nil ()), 00206 orb_ (CORBA::ORB::_nil ()), 00207 root_poa_ (), 00208 orb_params_ (), 00209 init_ref_map_ (TAO_DEFAULT_OBJECT_REF_TABLE_SIZE), 00210 object_ref_table_ (), 00211 object_key_table_ (), 00212 orbid_ (ACE_OS::strdup (orbid ? orbid : "")), 00213 resource_factory_ (0), 00214 client_factory_ (0), 00215 server_factory_ (0), 00216 opt_for_collocation_ (true), 00217 use_global_collocation_ (true), 00218 collocation_strategy_ (THRU_POA), 00219 00220 #if (TAO_HAS_CORBA_MESSAGING == 1) 00221 00222 policy_manager_ (0), 00223 default_policies_ (0), 00224 policy_current_ (0), 00225 00226 #endif /* TAO_HAS_CORBA_MESSAGING == 1 */ 00227 00228 poa_current_ (), 00229 adapter_registry_ (this), 00230 poa_adapter_ (0), 00231 tm_ (), 00232 tss_cleanup_funcs_ (), 00233 tss_resources_ (), 00234 has_shutdown_ (true), // Start the ORB in a "shutdown" state. Only 00235 // after CORBA::ORB_init() is called will the 00236 // ORB no longer be shutdown. This does not 00237 // mean that the ORB can be reinitialized. It 00238 // can only be initialized once. 00239 thread_per_connection_use_timeout_ (1), 00240 open_lock_ (), 00241 endpoint_selector_factory_ (0), 00242 #if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1) 00243 eager_transport_queueing_strategy_ (0), 00244 delayed_transport_queueing_strategy_ (0), 00245 flush_transport_queueing_strategy_ (0), 00246 #endif /* TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1 */ 00247 refcount_ (1), 00248 policy_factory_registry_ (0), 00249 orbinitializer_registry_ (0), 00250 #if (TAO_HAS_INTERCEPTORS == 1) 00251 pi_current_ (CORBA::Object::_nil ()), 00252 client_request_interceptor_adapter_ (0), 00253 server_request_interceptor_adapter_ (0), 00254 #endif /* TAO_HAS_INTERCEPTORS == 1 */ 00255 ior_interceptor_adapter_ (0), 00256 valuetype_adapter_ (0), 00257 parser_registry_ (), 00258 bidir_adapter_ (0), 00259 bidir_giop_policy_ (0), 00260 flushing_strategy_ (0), 00261 codeset_manager_ (0), 00262 config_ (gestalt), 00263 sync_scope_hook_ (0), 00264 timeout_hook_ (0) 00265 { 00266 #if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1) 00267 00268 ACE_NEW (this->flush_transport_queueing_strategy_, 00269 TAO::Flush_Transport_Queueing_Strategy); 00270 00271 #endif /* TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1 */ 00272 00273 #if (TAO_HAS_CORBA_MESSAGING == 1) 00274 00275 ACE_NEW (this->policy_manager_, 00276 TAO_Policy_Manager); 00277 00278 ACE_NEW (this->default_policies_, 00279 TAO_Policy_Set (TAO_POLICY_ORB_SCOPE)); 00280 00281 ACE_NEW (this->policy_current_, 00282 TAO_Policy_Current); 00283 00284 #endif /* TAO_HAS_CORBA_MESSAGING == 1 */ 00285 00286 // Initialize the default request dispatcher. 00287 ACE_NEW (this->request_dispatcher_, 00288 TAO_Request_Dispatcher); 00289 00290 } |
|
Destructor is protected since the ORB Core is a reference counted object. Definition at line 292 of file ORB_Core.cpp. References TAO::ORB::close_services(), codeset_manager_, default_policies_, delayed_transport_queueing_strategy_, eager_transport_queueing_strategy_, flush_transport_queueing_strategy_, flushing_strategy_, ACE_OS::free(), ACE_Service_Config::global(), orb_, orbinitializer_registry_, policy_current_, policy_factory_registry_, policy_manager_, request_dispatcher_, and thread_lane_resources_manager_.
00293 { 00294 delete this->thread_lane_resources_manager_; 00295 00296 delete this->flushing_strategy_; 00297 00298 ACE_OS::free (this->orbid_); 00299 00300 #if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1) 00301 00302 delete this->eager_transport_queueing_strategy_; 00303 delete this->delayed_transport_queueing_strategy_; 00304 delete this->flush_transport_queueing_strategy_; 00305 00306 #endif /* TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1 */ 00307 00308 #if (TAO_HAS_CORBA_MESSAGING == 1) 00309 00310 ::CORBA::release (this->policy_manager_); 00311 delete this->default_policies_; 00312 ::CORBA::release (this->policy_current_); 00313 00314 #endif /* TAO_HAS_CORBA_MESSAGING == 1 */ 00315 00316 delete this->request_dispatcher_; 00317 00318 delete this->policy_factory_registry_; 00319 00320 // Don't delete, is a process wide singleton shared by all orbs 00321 orbinitializer_registry_ = 0; 00322 00323 ::CORBA::release (this->orb_); 00324 00325 delete this->codeset_manager_; 00326 this->codeset_manager_ = 0; 00327 00328 // This will destroy the service repository for this core 00329 (void) TAO::ORB::close_services (this->config_); 00330 00331 if (this->config_ != ACE_Service_Config::global()) 00332 delete this->config_; 00333 00334 this->config_ = 0; 00335 } |
|
|
|
Definition at line 23 of file ORB_Core.inl. References fini(). 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().
|
|
Reference counting...
Definition at line 17 of file ORB_Core.inl. 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 return this->refcount_++; 00020 } |
|
This is where the tss resources for this ORB are stored.
|
|
Get the adapter registry.
Definition at line 160 of file ORB_Core.inl. References adapter_registry_. Referenced by create_object(), TAO_Request_Dispatcher::dispatch(), and initialize_object_i().
00161 { 00162 return &this->adapter_registry_; 00163 } |
|
Register an IOR interceptor.
Definition at line 3109 of file ORB_Core.cpp. References ACE_ERROR, ACE_TEXT, TAO_IORInterceptor_Adapter::add_interceptor(), ior_interceptor_adapter(), ior_interceptor_adapter_, PortableInterceptor::IORInterceptor_ptr, and LM_ERROR.
03111 { 03112 if (this->ior_interceptor_adapter ()) 03113 { 03114 this->ior_interceptor_adapter_->add_interceptor (interceptor); 03115 } 03116 else 03117 { 03118 ACE_ERROR ((LM_ERROR, 03119 ACE_TEXT ("(%P|%t) %p\n"), 03120 ACE_TEXT ("ERROR: ORB Core unable to find the ") 03121 ACE_TEXT ("IORInterceptor Adapter Factory instance"))); 03122 03123 throw ::CORBA::INTERNAL (); 03124 } 03125 } |
|
Register a server request interceptor with policies.
Definition at line 3259 of file ORB_Core.cpp. References ACE_ERROR, ACE_TEXT, TAO::ServerRequestInterceptor_Adapter::add_interceptor(), LM_ERROR, CORBA::PolicyList, server_request_interceptor_adapter_, serverrequestinterceptor_adapter_i(), and PortableInterceptor::ServerRequestInterceptor_ptr.
03262 { 03263 if (this->serverrequestinterceptor_adapter_i ()) 03264 { 03265 this->server_request_interceptor_adapter_->add_interceptor ( 03266 interceptor, 03267 policies); 03268 03269 } 03270 else 03271 { 03272 ACE_ERROR ((LM_ERROR, 03273 ACE_TEXT ("(%P|%t) %p\n"), 03274 ACE_TEXT ("ERROR: ORB Core unable to find the ") 03275 ACE_TEXT ("Server Request Interceptor Adapter Factory ") 03276 ACE_TEXT ("instance"))); 03277 03278 throw ::CORBA::INTERNAL (); 03279 } 03280 } |
|
Register a client request interceptor with policies.
Definition at line 3235 of file ORB_Core.cpp. References ACE_ERROR, ACE_TEXT, TAO::ClientRequestInterceptor_Adapter::add_interceptor(), client_request_interceptor_adapter_, clientrequestinterceptor_adapter_i(), PortableInterceptor::ClientRequestInterceptor_ptr, LM_ERROR, and CORBA::PolicyList.
03238 { 03239 if (this->clientrequestinterceptor_adapter_i ()) 03240 { 03241 this->client_request_interceptor_adapter_->add_interceptor ( 03242 interceptor, 03243 policies); 03244 03245 } 03246 else 03247 { 03248 ACE_ERROR ((LM_ERROR, 03249 ACE_TEXT ("(%P|%t) %p\n"), 03250 ACE_TEXT ("ERROR: ORB Core unable to find the ") 03251 ACE_TEXT ("Client Request Interceptor Adapter Factory ") 03252 ACE_TEXT ("instance"))); 03253 03254 throw ::CORBA::INTERNAL (); 03255 } 03256 } |
|
Register a server request interceptor.
Definition at line 3214 of file ORB_Core.cpp. References ACE_ERROR, ACE_TEXT, TAO::ServerRequestInterceptor_Adapter::add_interceptor(), LM_ERROR, server_request_interceptor_adapter_, serverrequestinterceptor_adapter_i(), and PortableInterceptor::ServerRequestInterceptor_ptr.
03217 { 03218 if (this->serverrequestinterceptor_adapter_i ()) 03219 { 03220 this->server_request_interceptor_adapter_->add_interceptor (interceptor); 03221 } 03222 else 03223 { 03224 ACE_ERROR ((LM_ERROR, 03225 ACE_TEXT ("(%P|%t) %p\n"), 03226 ACE_TEXT ("ERROR: ORB Core unable to find the ") 03227 ACE_TEXT ("Server Request Interceptor Adapter Factory ") 03228 ACE_TEXT ("instance"))); 03229 03230 throw ::CORBA::INTERNAL (); 03231 } 03232 } |
|
Register a client request interceptor.
Definition at line 3165 of file ORB_Core.cpp. References ACE_ERROR, ACE_TEXT, TAO::ClientRequestInterceptor_Adapter::add_interceptor(), client_request_interceptor_adapter_, clientrequestinterceptor_adapter_i(), PortableInterceptor::ClientRequestInterceptor_ptr, and LM_ERROR.
03168 { 03169 if (this->clientrequestinterceptor_adapter_i ()) 03170 { 03171 this->client_request_interceptor_adapter_->add_interceptor (interceptor); 03172 } 03173 else 03174 { 03175 ACE_ERROR ((LM_ERROR, 03176 ACE_TEXT ("(%P|%t) %p\n"), 03177 ACE_TEXT ("ERROR: ORB Core unable to find the ") 03178 ACE_TEXT ("Client Request Interceptor Adapter Factory ") 03179 ACE_TEXT ("instance"))); 03180 03181 throw ::CORBA::INTERNAL (); 03182 } 03183 } |
|
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 2910 of file ORB_Core.cpp. References TAO_Cleanup_Func_Registry::register_cleanup_function(), and tss_cleanup_funcs_.
02911 { 02912 return this->tss_cleanup_funcs_.register_cleanup_function (cleanup, slot_id); 02913 } |
|
Definition at line 49 of file ORB_Core.inl. References bidir_giop_policy_.
00050 { 00051 this->bidir_giop_policy_ = val; 00052 } |
|
Set and Get methods to indicate whether a BiDir IIOP policy has been set in the POA.
Definition at line 43 of file ORB_Core.inl. References bidir_giop_policy_. Referenced by TAO_IIOP_Transport::generate_request_header(), and TAO_GIOP_Message_Generator_Parser_12::parse_request_header().
00044 { 00045 return this->bidir_giop_policy_; 00046 } |
|
Definition at line 2860 of file ORB_Core.cpp. References Sync_Scope_Hook, sync_scope_hook_, and Messaging::SyncScope. Referenced by TAO::Invocation_Adapter::set_response_flags().
02863 { 02864 Sync_Scope_Hook sync_scope_hook = this->sync_scope_hook_; 02865 02866 if (sync_scope_hook == 0) 02867 { 02868 has_synchronization = false; 02869 return; 02870 } 02871 02872 (*sync_scope_hook) (this, stub, has_synchronization, scope); 02873 } |
|
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 2916 of file ORB_Core.cpp. References Timeout_Hook, and timeout_hook_. Referenced by TAO::LocateRequest_Invocation_Adapter::get_timeout(), and TAO::Invocation_Adapter::get_timeout().
02919 { 02920 Timeout_Hook timeout_hook = this->timeout_hook_; 02921 02922 if (timeout_hook == 0) 02923 { 02924 has_timeout = false; 02925 return; 02926 } 02927 (*timeout_hook) (this, stub, has_timeout, time_value); 02928 } |
|
Check if ORB has shutdown. If it has, throw an exception.
Definition at line 2275 of file ORB_Core.cpp. References has_shutdown(). Referenced by CORBA::ORB::check_shutdown().
02276 { 02277 if (this->has_shutdown ()) 02278 { 02279 // As defined by the CORBA 2.3 specification, throw a 02280 // CORBA::BAD_INV_ORDER exception with minor code 4 if the ORB 02281 // has shutdown by the time an ORB function is called. 02282 02283 throw ::CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 4, CORBA::COMPLETED_NO); 02284 } 02285 } |
|
Returns pointer to the client factory.
Definition at line 1730 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_Muxed_TMS::TAO_Muxed_TMS(), TAO_Transport::TAO_Transport(), TAO::Profile_Transport_Resolver::use_parallel_connect(), and TAO_Wait_On_Read::wait().
01731 { 01732 if (this->client_factory_ == 0) 01733 { 01734 // Look in the service repository for an instance. 01735 this->client_factory_ = 01736 ACE_Dynamic_Service<TAO_Client_Strategy_Factory>::instance 01737 (this->configuration (), 01738 ACE_TEXT ("Client_Strategy_Factory")); 01739 } 01740 01741 return this->client_factory_; 01742 } |
|
Get the Client Request Interceptor adapter. Will not create a new one if not available yet. Definition at line 568 of file ORB_Core.inl. References client_request_interceptor_adapter_.
00569 { 00570 return this->client_request_interceptor_adapter_; 00571 } |
|
Get the Client Request Interceptor adapter. If not created, this method will try to create one if needed. Definition at line 3186 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().
03187 { 03188 if (this->client_request_interceptor_adapter_ == 0) 03189 { 03190 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, 03191 ace_mon, 03192 this->lock_, 03193 0); 03194 03195 if (this->client_request_interceptor_adapter_ == 0) 03196 { 03197 TAO_ClientRequestInterceptor_Adapter_Factory *factory = 03198 ACE_Dynamic_Service<TAO_ClientRequestInterceptor_Adapter_Factory>::instance 03199 (this->configuration (), 03200 ACE_TEXT ("ClientRequestInterceptor_Adapter_Factory")); 03201 03202 if (factory) 03203 { 03204 this->client_request_interceptor_adapter_ = 03205 factory->create (); 03206 } 03207 } 03208 } 03209 03210 return this->client_request_interceptor_adapter_; 03211 } |
|
Get Code Set Manager.
Definition at line 417 of file ORB_Core.inl. References TAO_Resource_Factory::codeset_manager(), 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(), init(), TAO_GIOP_Message_Base::process_request(), and TAO::Profile_Transport_Resolver::resolve().
00418 { 00419 if (this->orb_params()->negotiate_codesets() == 0) 00420 return 0; 00421 if (this->codeset_manager_ == 0) 00422 { 00423 // This causes a factory to be loaded which will call 00424 // the codeset_manager setter in this thread. 00425 this->codeset_manager_ = 00426 this->resource_factory()->codeset_manager(); 00427 if (this->codeset_manager_ == 0) 00428 this->orb_params()->negotiate_codesets(false); 00429 } 00430 return this->codeset_manager_; 00431 } |
|
Returns a pointer to the Collocation Resolver.
Definition at line 1535 of file ORB_Core.cpp. References ACE_TEXT_CHAR_TO_TCHAR, collocation_resolver_, and configuration(). Referenced by collocation_strategy().
01536 { 01537 // Check if there is a cached reference. 01538 if (this->collocation_resolver_ != 0) 01539 return *this->collocation_resolver_; 01540 01541 // If not, lookup it up. 01542 this->collocation_resolver_ = 01543 ACE_Dynamic_Service<TAO_Collocation_Resolver>::instance 01544 (this->configuration (), 01545 ACE_TEXT_CHAR_TO_TCHAR (this->orb_params ()->collocation_resolver_name ())); 01546 01547 return *this->collocation_resolver_; 01548 } |
|
This method returns the right collocation strategy, if any, to be used to perform a method invocation on the given object.
Definition at line 3393 of file ORB_Core.cpp. References CORBA::Object::_servant(), CORBA::Object::_stubobj(), ACE_ASSERT, collocation_resolver(), DIRECT, TAO_Pseudo_Var_T< T >::in(), TAO_Collocation_Resolver::is_collocated(), CORBA::is_nil(), CORBA::Object_ptr, TAO_Stub::servant_orb_var(), and THRU_POA. Referenced by TAO::Invocation_Adapter::invoke_i().
03394 { 03395 TAO_Stub *stub = object->_stubobj (); 03396 if (!CORBA::is_nil (stub->servant_orb_var ().in ()) && 03397 stub->servant_orb_var ()->orb_core () != 0) 03398 { 03399 TAO_ORB_Core *orb_core = 03400 stub->servant_orb_var ()->orb_core (); 03401 03402 const int collocated = 03403 orb_core->collocation_resolver ().is_collocated (object); 03404 03405 if (collocated) 03406 { 03407 switch (stub->servant_orb_var ()->orb_core ()->get_collocation_strategy ()) 03408 { 03409 case THRU_POA: 03410 return TAO::TAO_CS_THRU_POA_STRATEGY; 03411 03412 case DIRECT: 03413 { 03414 ///////////////////////////////////////////////////////////// 03415 // If the servant is null and you are collocated this means 03416 // that the POA policy NON-RETAIN is set, and with that policy 03417 // using the DIRECT collocation strategy is just insane. 03418 ///////////////////////////////////////////////////////////// 03419 ACE_ASSERT (object->_servant () != 0); 03420 return TAO::TAO_CS_DIRECT_STRATEGY; 03421 } 03422 } 03423 } 03424 } 03425 03426 // In this case the Object is a client. 03427 return TAO::TAO_CS_REMOTE_STRATEGY; 03428 } |
|
|
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 2931 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().
02934 { 02935 Timeout_Hook connection_timeout_hook = 02936 TAO_ORB_Core_Static_Resources::instance ()->connection_timeout_hook_; 02937 02938 if (connection_timeout_hook == 0) 02939 { 02940 has_timeout = false; 02941 return; 02942 } 02943 02944 (*connection_timeout_hook) (this, stub, has_timeout, time_value); 02945 02946 Timeout_Hook alt_connection_timeout_hook = 02947 TAO_ORB_Core_Static_Resources::instance ()->alt_connection_timeout_hook_; 02948 02949 if (alt_connection_timeout_hook == 0) 02950 return; 02951 02952 if (!has_timeout || time_value == ACE_Time_Value::zero ) 02953 { 02954 (*alt_connection_timeout_hook) (this, stub, has_timeout,time_value); 02955 return; 02956 } 02957 02958 // At this point, both the primary and alternate hooks are defined, and 02959 // the primary did indeed set a value 02960 ACE_Time_Value tv1; 02961 bool ht1; 02962 (*alt_connection_timeout_hook) (this, stub, ht1,tv1); 02963 if (ht1 && tv1 > ACE_Time_Value::zero && tv1 < time_value) 02964 time_value = tv1; 02965 } |
|
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 2968 of file ORB_Core.cpp. References ACE_DEBUG, ACE_TEXT, LM_DEBUG, TAO_debug_level, Timeout_Hook, and TOCSRi. Referenced by connection_timeout().
02969 { 02970 // Saving the hook pointer so that we can use it later when needed. 02971 // For now there are only two entry points that may supply a connection 02972 // timeout hook. But there might be future entry points, so this should 02973 // probably be addressed by a more sophisticated mechanism. 02974 02975 #define TOCSRi TAO_ORB_Core_Static_Resources::instance () 02976 02977 // A consern was raised that since this function is called by two 02978 // different initializers there may be a race condition that might 02979 // require a lock. We are not using a lock at this time because of 02980 // two callers, one happens only during service directive processing 02981 // and the other only during ORB Initialization time. The former 02982 // happens when the OC_Endpoint_Selector_Factory is loaded, the 02983 // latter is part of the messaging library. The messaging library 02984 // calls this function as part of pre_init processing, and this call 02985 // happes for every ORB instance. This was the case before these The 02986 // latter call occurs when the messaging library is loaded. The 02987 // redundant calls occured then as well. Second, it isn't clear how 02988 // a lock in this static method would react in the face of windows 02989 // dlls, shared memory segments, etc. Therefore we are continuing to 02990 // keep this code lockless as it always was, assuming no 02991 // simultanious overwrite will occur. 02992 02993 if (TOCSRi->connection_timeout_hook_ == 0) 02994 { 02995 if (TAO_debug_level > 2) 02996 { 02997 ACE_DEBUG ((LM_DEBUG, 02998 ACE_TEXT("TAO (%P|%t) setting primary hook\n"))); 02999 } 03000 TOCSRi->connection_timeout_hook_ = hook; 03001 } 03002 else if (TOCSRi->connection_timeout_hook_ != hook && 03003 TOCSRi->alt_connection_timeout_hook_ == 0) 03004 { 03005 if (TAO_debug_level > 2) 03006 { 03007 ACE_DEBUG ((LM_DEBUG, 03008 ACE_TEXT("TAO (%P|%t) setting alternate hook\n"))); 03009 } 03010 TOCSRi->alt_connection_timeout_hook_ = hook; 03011 } 03012 else 03013 if (TAO_debug_level > 2) 03014 { 03015 ACE_DEBUG ((LM_DEBUG, 03016 ACE_TEXT ("TAO (%P|%t) not overwriting alternate hook.") 03017 ACE_TEXT (" Is it still null? %d\n"), 03018 TOCSRi->alt_connection_timeout_hook_ == 0)); 03019 } 03020 03021 #undef TOCSRi 03022 } |
|
Get the connector registry.
Definition at line 2806 of file ORB_Core.cpp. References TAO_Thread_Lane_Resources::connector_registry(), and lane_resources(). Referenced by operator>>(), TAO_CORBALOC_Parser::parse_string(), resolve_rir(), CORBA::Object::tao_object_initialize(), TAO::Profile_Transport_Resolver::try_connect_i(), and CORBA::ORB::url_ior_string_to_object().
02807 { 02808 TAO_Connector_Registry *conn = 02809 this->lane_resources ().connector_registry (); 02810 02811 return conn; 02812 } |
|
Routine that creates a ACE_Data_Block given the lock and allocators.
Definition at line 2782 of file ORB_Core.cpp. References ACE_Data_Block, ACE_NEW_MALLOC_RETURN, and ACE_Allocator::malloc(). Referenced by create_input_cdr_data_block().
02786 { 02787 ACE_Data_Block *nb = 0; 02788 02789 ACE_NEW_MALLOC_RETURN ( 02790 nb, 02791 static_cast<ACE_Data_Block*> ( 02792 dblock_allocator->malloc (sizeof (ACE_Data_Block))), 02793 ACE_Data_Block (size, 02794 ACE_Message_Block::MB_DATA, 02795 0, 02796 buffer_allocator, 02797 lock_strategy, 02798 0, 02799 dblock_allocator), 02800 0); 02801 02802 return nb; 02803 } |
|
The Message Blocks used for input CDRs must have appropiate locking strategies. Definition at line 2758 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_Base::make_queued_data().
02759 { 02760 02761 ACE_Allocator *dblock_allocator = 0; 02762 ACE_Allocator *buffer_allocator = 0; 02763 02764 dblock_allocator = 02765 this->input_cdr_dblock_allocator (); 02766 buffer_allocator = 02767 this->input_cdr_buffer_allocator (); 02768 02769 ACE_Lock* lock_strategy = 0; 02770 if (this->resource_factory ()->use_locked_data_blocks ()) 02771 { 02772 lock_strategy = &this->data_block_lock_; 02773 } 02774 02775 return this->create_data_block_i (size, 02776 buffer_allocator, 02777 dblock_allocator, 02778 lock_strategy); 02779 } |
|
Create a new object, use the adapter registry to create a collocated object, if not possible then create a regular object. Definition at line 1898 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 TAO_CORBALOC_Parser::make_stub_from_mprofile(), operator>>(), and CORBA::ORB::url_ior_string_to_object().
01899 { 01900 // @@ What about forwarding. With this approach we are never forwarded 01901 // when we use collocation! 01902 const TAO_MProfile &mprofile = stub->base_profiles (); 01903 01904 // @@ We should thow CORBA::NO_MEMORY in platforms with exceptions, 01905 // but we are stuck in platforms without exceptions! 01906 TAO_ORB_Core_Auto_Ptr collocated_orb_core; 01907 CORBA::Object_ptr x = 0; 01908 01909 { 01910 // Lock the ORB_Table against concurrent modification while we 01911 // iterate through the ORBs. 01912 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, 01913 guard, 01914 TAO::ORB_Table::instance()->lock (), 01915 CORBA::Object::_nil ()); 01916 01917 TAO::ORB_Table * const table = TAO::ORB_Table::instance (); 01918 TAO::ORB_Table::iterator const end = table->end (); 01919 for (TAO::ORB_Table::iterator i = table->begin (); i != end; ++i) 01920 { 01921 ::TAO_ORB_Core * const other_core = (*i).second.core (); 01922 01923 if (this->is_collocation_enabled (other_core, mprofile)) 01924 { 01925 other_core->_incr_refcnt(); 01926 TAO_ORB_Core_Auto_Ptr tmp_auto_ptr (other_core); 01927 collocated_orb_core = tmp_auto_ptr; 01928 break; 01929 } 01930 } 01931 } 01932 01933 if (collocated_orb_core.get ()) 01934 { 01935 TAO_Adapter_Registry *ar = 01936 collocated_orb_core.get ()->adapter_registry (); 01937 01938 x = ar->create_collocated_object (stub, mprofile); 01939 } 01940 01941 01942 if (!x) 01943 { 01944 // The constructor sets the proxy broker as the 01945 // Remote one. 01946 ACE_NEW_RETURN (x, 01947 CORBA::Object (stub, 0), 01948 0); 01949 } 01950 01951 return x; 01952 } |
|
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 1831 of file ORB_Core.cpp. References TAO_Stub_Factory::create_stub(), and stub_factory(). Referenced by create_stub_object(), TAO_CORBALOC_Parser::make_stub_from_mprofile(), operator>>(), CORBA::Object::tao_object_initialize(), and CORBA::ORB::url_ior_string_to_object().
01833 { 01834 TAO_Stub *retval = 01835 this->stub_factory ()->create_stub (repository_id, profiles, this); 01836 return retval; 01837 } |
|
Makes sure that the ORB is open and then creates a TAO_Stub based on the endpoint. Definition at line 1849 of file ORB_Core.cpp. References TAO_Stub::base_profiles(), create_stub(), TAO_MProfile::get_profile(), TAO_Profile::policies(), TAO_MProfile::policy_list(), CORBA::PolicyList, and TAO_MProfile::profile_count().
01852 { 01853 // Add the Polices contained in "policy_list" to each profile so 01854 // that those policies will be exposed to the client in the IOR. In 01855 // particular each CORBA::Policy has to be converted in to 01856 // Messaging::PolicyValue, and then all the Messaging::PolicyValue 01857 // should be embedded inside a Messaging::PolicyValueSeq which 01858 // became in turns the "body" of the IOP::TaggedComponent. This 01859 // conversion is a responsability of the CORBA::Profile class. (See 01860 // orbos\98-05-05.pdf Section 5.4) 01861 if (policy_list->length () != 0) 01862 { 01863 TAO_Profile * profile = 0; 01864 01865 CORBA::ULong const count = mprofile.profile_count (); 01866 for (CORBA::ULong i = 0; i < count; ++i) 01867 { 01868 // Get the ith profile 01869 profile = mprofile.get_profile (i); 01870 profile->policies (policy_list); 01871 } 01872 } 01873 01874 /// Initialize a TAO_Stub object with the mprofile thats passed. 01875 TAO_Stub *stub = this->create_stub (type_id, mprofile); 01876 01877 stub->base_profiles ().policy_list (policy_list); 01878 01879 return stub; 01880 } |
|
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 3103 of file ORB_Core.cpp. References TAO_TSS_Resources::default_environment_, and TAO_TSS_Resources::instance().
03104 { 03105 TAO_TSS_Resources::instance ()->default_environment_ = env; 03106 } |
|
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 3097 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().
03098 { 03099 return TAO_TSS_Resources::instance ()->default_environment_; 03100 } |
|
This strategy is the default, no explicit queueing and no explicit flush |
|
Shutdown the ORB and free resources.
Definition at line 2247 of file ORB_Core.cpp. References destroy_interceptors(), TAO::ORB_Table::instance(), and shutdown(). Referenced by CORBA::ORB::destroy().
02248 { 02249 // 02250 // All destroy() should do is (a) call shutdown() and (b) unbind() 02251 // from the ORB table. Nothing else should really be added to this 02252 // method. Everything else should go to the shutdown() method. 02253 // Remember when the ORB Core is finally removed from the ORB table, 02254 // the reference count goes to zero and fini() is called. fini() 02255 // calls shutdown() and does not call destroy() since destroy() will 02256 // try to unbind from the ORB table again. Additional code should 02257 // not be added to destroy() since there is no guarantee that 02258 // orb->destroy() will ever be called by the user. Since TAO 02259 // guarantees that shutdown() will be called, all cleanup code 02260 // should go there. 02261 // 02262 02263 // Shutdown the ORB and block until the shutdown is complete. 02264 this->shutdown (1); 02265 02266 // Invoke Interceptor::destroy() on all registered interceptors. 02267 this->destroy_interceptors (); 02268 02269 // Now remove it from the ORB table so that it's ORBid may be 02270 // reused. 02271 TAO::ORB_Table::instance ()->unbind (this->orbid_); 02272 } |
|
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 2288 of file ORB_Core.cpp. References ACE_DEBUG, ACE_GUARD, ACE_TEXT, 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().
02289 { 02290 try 02291 { 02292 ACE_GUARD (TAO_SYNCH_MUTEX, monitor, this->lock_); 02293 02294 #if TAO_HAS_INTERCEPTORS == 1 02295 if (this->client_request_interceptor_adapter_ != 0) 02296 { 02297 this->client_request_interceptor_adapter_->destroy_interceptors (); 02298 02299 delete this->client_request_interceptor_adapter_; 02300 this->client_request_interceptor_adapter_ = 0; 02301 } 02302 02303 if (this->server_request_interceptor_adapter_ != 0) 02304 { 02305 this->server_request_interceptor_adapter_->destroy_interceptors (); 02306 02307 delete this->server_request_interceptor_adapter_; 02308 this->server_request_interceptor_adapter_ = 0; 02309 } 02310 02311 #endif /* TAO_HAS_INTERCEPTORS == 1 */ 02312 02313 if (this->ior_interceptor_adapter_ != 0) 02314 { 02315 this->ior_interceptor_adapter_->destroy_interceptors (); 02316 02317 this->ior_interceptor_adapter_ = 0; 02318 } 02319 02320 } 02321 catch (...) 02322 { 02323 // .. catch all the exceptions.. 02324 if (TAO_debug_level > 3) 02325 { 02326 ACE_DEBUG ((LM_DEBUG, 02327 ACE_TEXT ("TAO (%P|%t) - Exception in TAO_ORB_Core") 02328 ACE_TEXT ("::destroy_interceptors () \n"))); 02329 } 02330 } 02331 02332 return; 02333 } |
|
Gets the value of TAO_ORB_Core::dynamic_adapter_name_.
Definition at line 1431 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::dynamic_adapter_name_, and TAO_ORB_Core_Static_Resources::instance().
01432 { 01433 return TAO_ORB_Core_Static_Resources::instance ()->dynamic_adapter_name_.c_str(); 01434 } |
|
Sets the value of TAO_ORB_Core::dynamic_adapter_name_.
Definition at line 1425 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::dynamic_adapter_name_, and TAO_ORB_Core_Static_Resources::instance().
01426 { 01427 TAO_ORB_Core_Static_Resources::instance ()->dynamic_adapter_name_ = name; 01428 } |
|
Returns a pointer to the endpoint selector factory.
Definition at line 1635 of file ORB_Core.cpp. References ACE_TEXT_CHAR_TO_TCHAR, configuration(), endpoint_selector_factory_, TAO_ORB_Parameters::endpoint_selector_factory_name(), and orb_params(). Referenced by TAO::Profile_Transport_Resolver::resolve().
01636 { 01637 // Check if there is a cached reference. 01638 if (this->endpoint_selector_factory_ != 0) 01639 return this->endpoint_selector_factory_; 01640 01641 // If not, look in the service repository for an instance. 01642 const char* endpoint_selector_factory_name = 01643 this->orb_params ()->endpoint_selector_factory_name (); 01644 01645 this->endpoint_selector_factory_ = 01646 ACE_Dynamic_Service<TAO_Endpoint_Selector_Factory>::instance 01647 (this->configuration (), 01648 ACE_TEXT_CHAR_TO_TCHAR (endpoint_selector_factory_name)); 01649 01650 return this->endpoint_selector_factory_; 01651 } |
|
Return a reference to the Fault Tolerant service object.
Definition at line 142 of file ORB_Core.inl. References ft_service_.
00143 { 00144 return this->ft_service_; 00145 } |
|
Final termination hook, typically called by CORBA::ORB's destructor. Definition at line 1340 of file ORB_Core.cpp. References ACE_CString, ACE_DEBUG, ACE_TEXT, ACE_TEXT_CHAR_TO_TCHAR, 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().
01341 { 01342 try 01343 { 01344 // Shutdown the ORB and block until the shutdown is complete. 01345 this->shutdown (1); 01346 } 01347 catch (const ::CORBA::Exception& ex) 01348 { 01349 ACE_CString message = 01350 "Exception caught in trying to shutdown "; 01351 message += this->orbid_; 01352 message += "\n"; 01353 01354 ex._tao_print_exception (message.c_str ()); 01355 } 01356 01357 // Wait for any server threads, ignoring any failures. 01358 (void) this->thr_mgr ()->wait (); 01359 01360 ::CORBA::release (this->implrepo_service_); 01361 01362 ::CORBA::release (this->typecode_factory_); 01363 01364 ::CORBA::release (this->codec_factory_); 01365 01366 ::CORBA::release (this->dynany_factory_); 01367 01368 ::CORBA::release (this->ior_manip_factory_); 01369 01370 ::CORBA::release (this->ior_table_); 01371 01372 if (TAO_debug_level > 2) 01373 { 01374 ACE_DEBUG ((LM_DEBUG, 01375 ACE_TEXT ("Destroying ORB <%s>\n"), 01376 ACE_TEXT_CHAR_TO_TCHAR (this->orbid_))); 01377 } 01378 01379 // Finalize lane resources. 01380 // 01381 // @@ Do not call this->thread_lane_resources_manager().finalize(). 01382 // this->thread_lane_manager_resources() can seg fault if the 01383 // factory method it invokes returns a zero pointer, which can 01384 // easily occur if the ORB is partially initialized due to a Service 01385 // Configurator initialization failure. Instead check if the 01386 // cached pointer is non-zero and then finalize. 01387 // 01388 // @todo Fix potential seg fault in 01389 // TAO_ORB_Core::thread_lane_resources_manager(). 01390 if (this->thread_lane_resources_manager_ != 0) 01391 this->thread_lane_resources_manager_->finalize (); 01392 01393 // Destroy the object_key table 01394 this->object_key_table_.destroy (); 01395 01396 delete this; 01397 01398 return 0; 01399 } |
|
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 67 of file ORB_Core.inl. References flushing_strategy_. Referenced by TAO_Transport::drain_queue(), TAO_Transport::handle_timeout(), TAO_Transport::send_asynchronous_message_i(), TAO_Transport::send_reply_message_i(), and TAO_Transport::send_synchronous_message_i().
00068 { 00069 return this->flushing_strategy_; 00070 } |
|
Get outgoing fragmentation strategy.
Definition at line 2815 of file ORB_Core.cpp. References TAO_Resource_Factory::create_fragmentation_strategy(), and resource_factory().
02816 { 02817 return 02818 this->resource_factory ()->create_fragmentation_strategy ( 02819 transport, 02820 this->orb_params_.max_message_size ()); 02821 } |
|
Get a cached policy. First, check the ORB-level Policy Manager, then check the ORB defaults. Definition at line 3061 of file ORB_Core.cpp. References TAO_Objref_Var_T< T >::_retn(), 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().
03062 { 03063 CORBA::Policy_var result; 03064 03065 TAO_Policy_Manager *policy_manager = this->policy_manager (); 03066 if (policy_manager != 0) 03067 { 03068 result = policy_manager->get_cached_policy (type); 03069 } 03070 03071 if (CORBA::is_nil (result.in ())) 03072 { 03073 result = this->get_default_policies ()->get_cached_policy (type); 03074 } 03075 03076 return result._retn (); 03077 } |
|
Get a cached policy. First, check the thread current, then check the ORB-level Policy Manager, then check the ORB defaults. Definition at line 3080 of file ORB_Core.cpp. References TAO_Objref_Var_T< T >::_retn(), get_cached_policy(), TAO_Policy_Current::get_cached_policy(), TAO_Objref_Var_T< T >::in(), CORBA::is_nil(), policy_current(), and CORBA::Policy_var.
03081 { 03082 TAO_Policy_Current &policy_current = this->policy_current (); 03083 03084 CORBA::Policy_var result = policy_current.get_cached_policy (type); 03085 03086 if (CORBA::is_nil (result.in ())) 03087 { 03088 result = this->get_cached_policy (type); 03089 } 03090 03091 return result._retn (); 03092 } |
|
Definition at line 216 of file ORB_Core.inl. References collocation_strategy_.
00217 { 00218 return this->collocation_strategy_; 00219 } |
|
Accessor method for the default_policies_.
Definition at line 520 of file ORB_Core.inl. References default_policies_. Referenced by get_cached_policy(), and get_policy().
00521 { 00522 return this->default_policies_; 00523 } |
|
Gets the value of TAO_ORB_Core::network_priority_protocols_hooks__.
Definition at line 79 of file ORB_Core.inl. References network_priority_protocols_hooks_.
00080 { 00081 return this->network_priority_protocols_hooks_; 00082 } |
|
Get a policy. First, check the ORB-level Policy Manager, then check the ORB defaults. Definition at line 3027 of file ORB_Core.cpp. References TAO_Objref_Var_T< T >::_retn(), 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().
03028 { 03029 CORBA::Policy_var result; 03030 03031 TAO_Policy_Manager *policy_manager = this->policy_manager (); 03032 if (policy_manager != 0) 03033 { 03034 result = policy_manager->get_policy (type); 03035 } 03036 03037 if (CORBA::is_nil (result.in ())) 03038 { 03039 result = this->get_default_policies ()->get_policy (type); 03040 } 03041 03042 return result._retn (); 03043 } |
|
Get a policy. First, check the thread current, then check the ORB-level Policy Manager, then check the ORB defaults. Definition at line 3046 of file ORB_Core.cpp. References TAO_Objref_Var_T< T >::_retn(), get_policy(), TAO_Policy_Current::get_policy(), TAO_Objref_Var_T< T >::in(), CORBA::is_nil(), policy_current(), CORBA::Policy_var, and CORBA::PolicyType.
03047 { 03048 TAO_Policy_Current &policy_current = this->policy_current (); 03049 03050 CORBA::Policy_var result = policy_current.get_policy (type); 03051 03052 if (CORBA::is_nil (result.in ())) 03053 { 03054 result = this->get_policy (type); 03055 } 03056 03057 return result._retn (); 03058 } |
|
Gets the value of TAO_ORB_Core::protocols_hooks__.
Definition at line 73 of file ORB_Core.inl. References protocols_hooks_. Referenced by TAO_IIOP_Connection_Handler::open(), TAO::Remote_Invocation::send_message(), and TAO_IIOP_Connection_Handler::set_dscp_codepoint().
00074 { 00075 return this->protocols_hooks_; 00076 } |
|
Definition at line 2878 of file ORB_Core.cpp. References delayed_transport_queueing_strategy_, eager_transport_queueing_strategy_, flush_transport_queueing_strategy_, and Messaging::SyncScope.
02880 { 02881 switch (scope) 02882 { 02883 case Messaging::SYNC_WITH_TRANSPORT: 02884 case Messaging::SYNC_WITH_SERVER: 02885 case Messaging::SYNC_WITH_TARGET: 02886 { 02887 return this->flush_transport_queueing_strategy_; 02888 } 02889 break; 02890 case Messaging::SYNC_NONE: 02891 { 02892 return this->eager_transport_queueing_strategy_; 02893 } 02894 break; 02895 case TAO::SYNC_DELAYED_BUFFERING: 02896 { 02897 return this->delayed_transport_queueing_strategy_; 02898 } 02899 break; 02900 default: 02901 { 02902 return 0; 02903 } 02904 } 02905 } |
|
Obtain the TSS resource in the given slot.
Definition at line 263 of file ORB_Core.inl. References get_tss_resources(), ACE_Array_Base< void * >::size(), and TAO_ORB_Core_TSS_Resources::ts_objects_.
00264 { 00265 TAO_ORB_Core_TSS_Resources *tss_resources = 00266 this->get_tss_resources (); 00267 00268 if (slot_id >= tss_resources->ts_objects_.size ()) 00269 return 0; 00270 00271 return tss_resources->ts_objects_[slot_id]; 00272 } |
|
Obtain the TSS resources of this orb.
Definition at line 257 of file ORB_Core.inl. 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().
00258 { 00259 return ACE_TSS_GET (&this->tss_resources_,TAO_ORB_Core_TSS_Resources); 00260 } |
|
Returns pointer to the factory for creating gui resources.
Definition at line 1506 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().
01507 { 01508 return TAO_TSS_Resources::instance ()->gui_resource_factory_; 01509 } |
|
Get the shutdown flag value.
Definition at line 322 of file ORB_Core.inl. 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().
00323 { 00324 return this->has_shutdown_; 00325 } |
|
For details on how this is used please see the FT service Definition at line 131 of file ORB_Core.inl. References ft_service_, TAO_Service_Callbacks::hash_ft(), and TAO_Fault_Tolerance_Service::service_callback(). Referenced by TAO_Profile::hash_service_i().
00132 { 00133 if (this->ft_service_.service_callback ()) 00134 { 00135 return this->ft_service_.service_callback ()->hash_ft (p, m); 00136 } 00137 00138 return 0; 00139 } |
|
Gets the value of TAO_ORB_Core::ifr_client_adapter_name_.
Definition at line 1443 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::ifr_client_adapter_name_, and TAO_ORB_Core_Static_Resources::instance().
01444 { 01445 return TAO_ORB_Core_Static_Resources::instance ()->ifr_client_adapter_name_.c_str(); 01446 } |
|
Sets the value of TAO_ORB_Core::ifr_client_adapter_name_.
Definition at line 1437 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::ifr_client_adapter_name_, and TAO_ORB_Core_Static_Resources::instance().
01438 { 01439 TAO_ORB_Core_Static_Resources::instance ()->ifr_client_adapter_name_ = name; 01440 } |
|
Definition at line 341 of file ORB_Core.inl. References implrepo_service_, and CORBA::Object_ptr.
00342 { 00343 this->implrepo_service_ = ir; 00344 } |
|
Definition at line 2830 of file ORB_Core.cpp. References CORBA::Object::_duplicate(), CORBA::Object::_nil(), TAO_Pseudo_Var_T< T >::_retn(), ACE_GUARD_RETURN, implrepo_service_, CORBA::is_nil(), CORBA::Object_var, orb_, CORBA::ORB::resolve_initial_references(), TAO_SYNCH_MUTEX, and use_implrepo_.
02831 { 02832 if (!this->use_implrepo_) 02833 return CORBA::Object::_nil (); 02834 02835 if (CORBA::is_nil (this->implrepo_service_)) 02836 { 02837 02838 try 02839 { 02840 CORBA::Object_var temp = 02841 this->orb_->resolve_initial_references ("ImplRepoService"); 02842 02843 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->lock_, CORBA::Object::_nil ()); 02844 02845 // @@ Worry about assigning a different IOR? (brunsch) 02846 this->implrepo_service_ = temp._retn (); 02847 } 02848 catch (const ::CORBA::Exception&) 02849 { 02850 // Just make sure that we have a null pointer. Ignore the exception 02851 // anyway. 02852 this->implrepo_service_ = CORBA::Object::_nil (); 02853 } 02854 } 02855 02856 return CORBA::Object::_duplicate (this->implrepo_service_); 02857 } |
|
Do we put the ImR's endpoints into persistent object references we create.
Definition at line 353 of file ORB_Core.inl. References imr_endpoints_in_ior_.
00354 { 00355 return imr_endpoints_in_ior_; 00356 } |
|
Initialize the guts of the ORB Core. It is intended that this be called by <CORBA::ORB_init>. Definition at line 338 of file ORB_Core.cpp. References CORBA::ORB::_tao_make_ORB(), CORBA::ORB::_use_omg_ior_format(), ACE_Arg_Shifter, ACE_CString, ACE_DEBUG, ACE_DEFAULT_CDR_MEMCPY_TRADEOFF, ACE_ERROR, ACE_GUARD_RETURN, ACE_LOG_MSG, ACE_NEW_THROW_EX, ACE_SignalHandler, ACE_TCHAR, ACE_TEXT, ACE_TEXT_ALWAYS_CHAR, ACE_TEXT_CHAR_TO_TCHAR, ACE_Time_Value, TAO_ORB_Parameters::add_endpoints(), TAO_ORB_Parameters::ami_collication(), ACE_OS::atoi(), TAO_ORB_Parameters::cache_incoming_by_dotted_decimal_address(), TAO_ORB_Parameters::cdr_memcpy_tradeoff(), codeset_manager(), codeset_manager_, collocation_strategy_, configuration(), TAO_ORB_Parameters::connect_ipv6_only(), TAO_Resource_Factory::create_flushing_strategy(), TAO_ORB_Parameters::default_init_ref(), DIRECT, TAO_ORB_Parameters::disable_rt_collocation_resolver(), TAO_ORB_Parameters::enforce_pref_interfaces(), flushing_strategy_, ACE_OS::fopen(), ACE_Argv_Type_Converter::get_argc(), TAO_Resource_Factory::get_protocol_factories(), ACE_Argv_Type_Converter::get_TCHAR_argv(), ACE_OS::getenv(), has_shutdown_, imr_endpoints_in_ior_, ACE_Shared_Object::init(), TAO::ObjectKey_Table::init(), TAO_Network_Priority_Protocols_Hooks::init_hooks(), TAO_Protocols_Hooks::init_hooks(), TAO_Resource_Factory::init_protocol_factories(), init_ref_map_, ACE_Array_Map< Key, Value, EqualTo >::insert(), TAO_ORB_Core_Static_Resources::instance(), ACE_Dynamic_Service< TYPE >::instance(), TAO_ORB_Parameters::linger(), LM_DEBUG, LM_ERROR, LM_WARNING, TAO_ORB_Parameters::max_message_size(), TAO_ORB_Parameters::mcast_discovery_endpoint(), TAO_ORB_Parameters::negotiate_codesets(), network_priority_protocols_hooks_, TAO_ORB_Parameters::nodelay(), object_key_table_, TAO_Codeset_Manager::open(), TAO_Server_Strategy_Factory::open(), TAO_Parser_Registry::open(), opt_for_collocation_, orb_, orb_params(), orb_params_, TAO_ORB_Parameters::parallel_connect_delay(), parser_registry_, TAO_ORB_Parameters::poa_factory_name(), TAO_ORB_Parameters::prefer_ipv6_interfaces(), TAO_ORB_Parameters::preferred_interfaces(), protocols_hooks_, TAO_ORB_Parameters::protocols_hooks_name(), reactor(), resource_factory(), server_factory(), server_id_, TAO_ORB_Parameters::service_port(), services_callbacks_init(), set_endpoint_helper(), TAO_ORB_Parameters::shared_profile(), SIG_IGN, ACE_OS::signal(), SIGPIPE, TAO_ORB_Parameters::single_read_optimization(), ACE_OS::snprintf(), TAO_ORB_Parameters::sock_dontroute(), TAO_ORB_Parameters::sock_keepalive(), TAO_ORB_Parameters::sock_rcvbuf_size(), TAO_ORB_Parameters::sock_sndbuf_size(), TAO_ORB_Parameters::std_profile_components(), ACE_OS::strcasecmp(), ACE_OS::strchr(), TAO_debug_level, TAO_DEFAULT_LANE, TAO_DEFAULT_THREAD_PER_CONNECTION_TIMEOUT, TAO_ORB_CORE_INIT_LOCATION_CODE, TAO_SYNCH_MUTEX, TAO_Server_Strategy_Factory::thread_per_connection_timeout(), THRU_POA, TAO_ORB_Parameters::use_dotted_decimal_addresses(), use_global_collocation_, use_implrepo_, TAO_ORB_Parameters::use_ipv6_link_local(), TAO_Resource_Factory::use_local_memory_pool(), TAO_ORB_Parameters::use_parallel_connects(), and ACE_Thread_Manager::wait_on_exit().
00339 { 00340 // Right now, this code expects to begin parsing in argv[1] rather 00341 // than argv[0]. I don't think that's wise. I think we need to 00342 // change that convention to argv[0] and let the initializing code 00343 // make any necessary shifts. 00344 // 00345 // Parse arguments to the ORB. Typically the ORB is passed 00346 // arguments straight from the command line, so we will simply pass 00347 // through them and respond to the ones we understand and ignore 00348 // those we don't. 00349 // 00350 // In some instances, we may actually build another vector of 00351 // arguments and stash it for use initializing other components such 00352 // as the RootPOA. 00353 00354 bool use_ior = true; 00355 int cdr_tradeoff = ACE_DEFAULT_CDR_MEMCPY_TRADEOFF; 00356 00357 // The following things should be changed to use the ACE_Env_Value<> 00358 // template sometime. 00359 00360 // Name Service port use for Multicast 00361 unsigned short ns_port = 0; 00362 00363 // Trading Service port used for Multicast 00364 unsigned short ts_port = 0; 00365 00366 // Implementation Repository Service port #. 00367 unsigned short ir_port = 0; 00368 00369 // Buffer sizes for kernel socket buffers 00370 // @@ should be a default defined for each protocol implementation? 00371 // since we may have protocols loaded which use shared memory of 00372 // some form, fredk 00373 int rcv_sock_size = -1; 00374 int snd_sock_size = -1; 00375 00376 // Use TCP_NODELAY. 00377 int nodelay = 1; 00378 00379 // Use SO_KEEPALIVE (default 0). 00380 int so_keepalive = 0; 00381 00382 // Use SO_DONTROUTE (default 0) 00383 int so_dontroute = 0; 00384 00385 // Use dotted decimal addresses 00386 // @@ This option will be treated as a suggestion to each loaded 00387 // protocol to use a character representation for the numeric 00388 // address, otherwise use a logical name. fredk 00389 #if (TAO_USE_DOTTED_DECIMAL_ADDRESSES == 1) 00390 int dotted_decimal_addresses = 1; 00391 #else 00392 int dotted_decimal_addresses = 0; 00393 #endif /* TAO_USE_DOTTED_DECIMAL_ADDRESSES */ 00394 00395 // Disable looking up the host name for incoming connections. 00396 int no_server_side_name_lookups = 0; 00397 00398 #if defined (TAO_STD_PROFILE_COMPONENTS) 00399 int std_profile_components = 1; 00400 #else 00401 int std_profile_components = 0; 00402 #endif /* TAO_STD_PROFILE_COMPONENTS */ 00403 00404 int linger = -1; 00405 00406 int use_parallel_connects = 0; 00407 00408 // Copy command line parameter not to use original. 00409 ACE_Argv_Type_Converter command_line (argc, argv); 00410 00411 ACE_Arg_Shifter arg_shifter (command_line.get_argc (), 00412 command_line.get_TCHAR_argv ()); 00413 00414 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, 00415 monitor, 00416 this->lock_, 00417 -1); 00418 00419 #if (TAO_NEGOTIATE_CODESETS == 1) 00420 int negotiate_codesets = 1; 00421 #else 00422 int negotiate_codesets = 0; 00423 #endif /* TAO_NEGOTIATE_CODESETS */ 00424 00425 // Pick up the value of the use_implrepo_ flag from an environment variable 00426 // called "TAO_USE_IMR". Do it here so that it can be overridden by 00427 // the "-ORBUseIMR" command line argument. 00428 // 00429 char* const use_IMR_env_var_value = ACE_OS::getenv ("TAO_USE_IMR") ; 00430 if (use_IMR_env_var_value != 0) 00431 { 00432 this->use_implrepo_ = ACE_OS::atoi (use_IMR_env_var_value) ; 00433 } 00434 00435 00436 while (arg_shifter.is_anything_left ()) 00437 { 00438 const ACE_TCHAR *current_arg = 0; 00439 00440 //////////////////////////////////////////////////////////////// 00441 // begin with the 'parameterless' flags // 00442 //////////////////////////////////////////////////////////////// 00443 if (0 != (current_arg = arg_shifter.get_the_parameter 00444 (ACE_TEXT("-ORBDottedDecimalAddresses")))) 00445 { 00446 // Use dotted decimal addresses 00447 // @@ this should be renamed. See above comment. fredk 00448 dotted_decimal_addresses = 00449 ACE_OS::atoi (current_arg); 00450 00451 arg_shifter.consume_arg (); 00452 } 00453 else if (0 != (current_arg = arg_shifter.get_the_parameter 00454 (ACE_TEXT("-ORBNoServerSideNameLookups")))) 00455 { 00456 // Don't look up the host name for incoming connections 00457 no_server_side_name_lookups = 00458 ACE_OS::atoi (current_arg); 00459 00460 arg_shifter.consume_arg (); 00461 } 00462 else if (0 != (current_arg = arg_shifter.get_the_parameter 00463 (ACE_TEXT("-ORBNameServicePort")))) 00464 { 00465 // Specify the port number for the NameService. 00466 // Unrelated to ORB Protocols, this is used for multicast. 00467 00468 ns_port = static_cast <CORBA::UShort> (ACE_OS::atoi (current_arg)); 00469 00470 arg_shifter.consume_arg (); 00471 } 00472 else if (0 != (current_arg = arg_shifter.get_the_parameter 00473 (ACE_TEXT("-ORBMulticastDiscoveryEndpoint")))) 00474 { 00475 // Specify mcast address:port@network_interface for the 00476 // Naming Service Multicast Discovery Protocol. 00477 // If there is no colon, its only the port no. 00478 // If there is a '@' also, it means that the network 00479 // interface name is specified. 00480 this->orb_params ()->mcast_discovery_endpoint ( 00481 ACE_TEXT_ALWAYS_CHAR(current_arg)); 00482 00483 arg_shifter.consume_arg (); 00484 } 00485 else if (0 != (current_arg = arg_shifter.get_the_parameter 00486 (ACE_TEXT("-ORBNodelay")))) 00487 { 00488 // Use TCP_NODELAY or not. 00489 nodelay = 00490 ACE_OS::atoi (current_arg); 00491 00492 arg_shifter.consume_arg (); 00493 } 00494 else if (0 != (current_arg = arg_shifter.get_the_parameter 00495 (ACE_TEXT("-ORBKeepalive")))) 00496 { 00497 // Use SO_KEEPALIVE or not. 00498 so_keepalive = 00499 ACE_OS::atoi (current_arg); 00500 00501 arg_shifter.consume_arg (); 00502 } 00503 else if (0 != (current_arg = arg_shifter.get_the_parameter 00504 (ACE_TEXT("-ORBDontRoute")))) 00505 { 00506 // Use SO_DONTROUTE or not. 00507 so_dontroute = 00508 ACE_OS::atoi (current_arg); 00509 00510 arg_shifter.consume_arg (); 00511 } 00512 else if (0 != (current_arg = arg_shifter.get_the_parameter 00513 (ACE_TEXT("-ORBTradingServicePort")))) 00514 { 00515 // Specify the port number for the TradingService. 00516 00517 ts_port = static_cast <CORBA::UShort> (ACE_OS::atoi (current_arg)); 00518 00519 arg_shifter.consume_arg (); 00520 } 00521 else if (0 != (current_arg = arg_shifter.get_the_parameter 00522 (ACE_TEXT("-ORBImplRepoServicePort")))) 00523 { 00524 // Specify the multicast port number for the Implementation 00525 // Repository. 00526 ir_port = static_cast <CORBA::UShort> (ACE_OS::atoi (current_arg)); 00527 00528 arg_shifter.consume_arg (); 00529 } 00530 else if (0 != (current_arg = arg_shifter.get_the_parameter 00531 (ACE_TEXT("-ORBRcvSock")))) 00532 { 00533 // @@ All protocol implementation may not use sockets, so 00534 // this can either be a generic I/O Buffer size or 00535 // Buffer info can be a per protocol specification, fredk 00536 00537 // Specify the size of the socket's receive buffer 00538 00539 rcv_sock_size = ACE_OS::atoi (current_arg); 00540 00541 arg_shifter.consume_arg (); 00542 } 00543 else if (0 != (current_arg = arg_shifter.get_the_parameter 00544 (ACE_TEXT("-ORBSndSock")))) 00545 { 00546 // @@ All protocol implementation may not use sockets, so 00547 // this can either be a generic I/O Buffer size or 00548 // Buffer info can be a per protocol specification, fredk 00549 00550 // Specify the size of the socket's send buffer 00551 snd_sock_size = ACE_OS::atoi (current_arg); 00552 00553 arg_shifter.consume_arg (); 00554 } 00555 else if (0 != (current_arg = arg_shifter.get_the_parameter 00556 (ACE_TEXT("-ORBObjRefStyle")))) 00557 { 00558 // Specifies the style of printed objrefs: URL or IOR 00559 // 00560 // BEGIN COMMENTS FROM IIOP-1.4 On Win32, we should be 00561 // collecting information from the Registry such as what 00562 // ORBs are configured, specific configuration details like 00563 // whether they generate IOR or URL style stringified 00564 // objrefs and which addresses they listen to (e.g. allowing 00565 // multihomed hosts to implement firewalls), user-meaningful 00566 // orb names (they will normally indicate domains), and 00567 // more. 00568 // 00569 // On UNIX, we should collect that from some private config 00570 // file. 00571 // 00572 // Instead, this just treats the "internet" ORB name 00573 // specially and makes it always use URL-style stringified 00574 // objrefs, where the hostname and TCP port number are 00575 // explicit (and the whole objref is readable by mortals). 00576 // BEGIN COMMENTS FROM IIOP-1.4 00577 const ACE_TCHAR *opt = current_arg; 00578 if (ACE_OS::strcasecmp (opt, ACE_TEXT("URL")) == 0) 00579 use_ior = false; 00580 else if (ACE_OS::strcasecmp (opt, ACE_TEXT("IOR")) == 0) 00581 use_ior = true; 00582 00583 arg_shifter.consume_arg (); 00584 } 00585 else if (0 != (current_arg = arg_shifter.get_the_parameter 00586 (ACE_TEXT("-ORBCollocationStrategy")))) 00587 { 00588 // Specify which collocation policy we want to use. 00589 const ACE_TCHAR *opt = current_arg; 00590 if (ACE_OS::strcasecmp (opt, ACE_TEXT("thru_poa")) == 0) 00591 this->collocation_strategy_ = THRU_POA; 00592 else if (ACE_OS::strcasecmp (opt, ACE_TEXT("direct")) == 0) 00593 this->collocation_strategy_ = DIRECT; 00594 00595 arg_shifter.consume_arg (); 00596 } 00597 else if (0 != (current_arg = arg_shifter.get_the_parameter 00598 (ACE_TEXT("-ORBCollocation")))) 00599 { 00600 // Specify whether we want to optimize against collocation 00601 // objects. Valid arguments are: "global", "no", and "per-orb". 00602 // Default is global. 00603 00604 const ACE_TCHAR *opt = current_arg; 00605 if (ACE_OS::strcasecmp (opt, ACE_TEXT("global")) == 0) 00606 { 00607 this->opt_for_collocation_ = true; 00608 this->use_global_collocation_ = true; 00609 } 00610 else if (ACE_OS::strcasecmp (opt, ACE_TEXT("NO")) == 0) 00611 { 00612 this->opt_for_collocation_ = false; 00613 this->use_global_collocation_ = false; 00614 } 00615 else if (ACE_OS::strcasecmp (opt, ACE_TEXT("per-orb")) == 0) 00616 { 00617 this->opt_for_collocation_ = true; 00618 this->use_global_collocation_ = false; 00619 } 00620 else 00621 { 00622 ACE_DEBUG ((LM_WARNING, 00623 ACE_TEXT ("WARNING: Unknown option to ") 00624 ACE_TEXT ("'-ORBCollocation': %s\n"), opt)); 00625 } 00626 00627 arg_shifter.consume_arg (); 00628 } 00629 else if (0 != (current_arg = arg_shifter.get_the_parameter 00630 (ACE_TEXT("-ORBPreferredInterfaces")))) 00631 { 00632 if (this->orb_params ()->preferred_interfaces ( 00633 ACE_TEXT_ALWAYS_CHAR (current_arg)) == false) 00634 throw ::CORBA::INTERNAL ( 00635 CORBA::SystemException::_tao_minor_code ( 00636 TAO_ORB_CORE_INIT_LOCATION_CODE, 00637 0), 00638 CORBA::COMPLETED_NO); 00639 00640 arg_shifter.consume_arg (); 00641 } 00642 else if (0 != (current_arg = arg_shifter.get_the_parameter 00643 (ACE_TEXT("-ORBEnforcePreferredInterfaces")))) 00644 { 00645 int enforce_pref_interfaces = ACE_OS::atoi (current_arg); 00646 if (enforce_pref_interfaces) 00647 this->orb_params ()->enforce_pref_interfaces (false); 00648 else 00649 this->orb_params ()->enforce_pref_interfaces (true); 00650 00651 arg_shifter.consume_arg (); 00652 } 00653 #if defined (ACE_HAS_IPV6) 00654 else if (0 != (current_arg = arg_shifter.get_the_parameter 00655 (ACE_TEXT("-ORBPreferIPV6Interfaces")))) 00656 { 00657 int prefer_ipv6_interfaces = ACE_OS::atoi (current_arg); 00658 if (prefer_ipv6_interfaces) 00659 this->orb_params ()->prefer_ipv6_interfaces (true); 00660 else 00661 this->orb_params ()->prefer_ipv6_interfaces (false); 00662 00663 arg_shifter.consume_arg (); 00664 } 00665 else if (0 != (current_arg = arg_shifter.get_the_parameter 00666 (ACE_TEXT("-ORBConnectIPV6Only")))) 00667 { 00668 int connect_ipv6_only = ACE_OS::atoi (current_arg); 00669 if (connect_ipv6_only) 00670 this->orb_params ()->connect_ipv6_only (true); 00671 else 00672 this->orb_params ()->connect_ipv6_only (false); 00673 00674 arg_shifter.consume_arg (); 00675 } 00676 else if ((current_arg = arg_shifter.get_the_parameter 00677 (ACE_TEXT("-ORBUseIPV6LinkLocal")))) 00678 { 00679 int use_ipv6_link_local = ACE_OS::atoi (current_arg); 00680 if (use_ipv6_link_local) 00681 this->orb_params ()->use_ipv6_link_local (true); 00682 else 00683 this->orb_params ()->use_ipv6_link_local (false); 00684 00685 arg_shifter.consume_arg (); 00686 } 00687 #endif /* ACE_HAS_IPV6 */ 00688 else if (0 != (current_arg = arg_shifter.get_the_parameter 00689 (ACE_TEXT("-ORBCDRTradeoff")))) 00690 { 00691 cdr_tradeoff = ACE_OS::atoi (current_arg); 00692 00693 arg_shifter.consume_arg (); 00694 } 00695 00696 // A new <ObjectID>:<IOR> mapping has been specified. This will be 00697 // used by the resolve_initial_references (). 00698 00699 else if (0 != (current_arg = arg_shifter.get_the_parameter 00700 (ACE_TEXT("-ORBInitRef")))) 00701 { 00702 const ACE_TCHAR *pos = ACE_OS::strchr (current_arg, '='); 00703 if (pos == 0) 00704 { 00705 ACE_ERROR ((LM_ERROR, 00706 ACE_TEXT ("Invalid ORBInitRef argument '%s'") 00707 ACE_TEXT ("format is ObjectID=IOR\n"), 00708 current_arg)); 00709 throw ::CORBA::INTERNAL ( 00710 CORBA::SystemException::_tao_minor_code ( 00711 TAO_ORB_CORE_INIT_LOCATION_CODE, 00712 0), 00713 CORBA::COMPLETED_NO); 00714 } 00715 ACE_CString object_id (ACE_TEXT_ALWAYS_CHAR(current_arg), 00716 pos - current_arg); 00717 ACE_CString IOR (ACE_TEXT_ALWAYS_CHAR(pos + 1)); 00718 if (!this->init_ref_map_.insert ( 00719 std::make_pair (InitRefMap::key_type (object_id), 00720 InitRefMap::data_type (IOR))).second) 00721 { 00722 ACE_ERROR ((LM_ERROR, 00723 ACE_TEXT ("Duplicate -ORBInitRef ") 00724 ACE_TEXT ("argument '%s'\n"), 00725 current_arg)); 00726 throw ::CORBA::INTERNAL ( 00727 CORBA::SystemException::_tao_minor_code ( 00728 TAO_ORB_CORE_INIT_LOCATION_CODE, 00729 0), 00730 CORBA::COMPLETED_NO); 00731 } 00732 arg_shifter.consume_arg (); 00733 } 00734 else if (0 != (current_arg = arg_shifter.get_the_parameter 00735 (ACE_TEXT("-ORBDefaultInitRef")))) 00736 { 00737 // Set the list of prefixes from -ORBDefaultInitRef. 00738 this->orb_params ()->default_init_ref 00739 (ACE_TEXT_ALWAYS_CHAR(current_arg)); 00740 00741 arg_shifter.consume_arg (); 00742 } 00743 else if (0 != (current_arg = arg_shifter.get_the_parameter 00744 (ACE_TEXT("-ORBStdProfileComponents")))) 00745 { 00746 std_profile_components = 00747 ACE_OS::atoi (current_arg); 00748 arg_shifter.consume_arg (); 00749 } 00750 else if (0 != (current_arg = arg_shifter.get_the_parameter 00751 (ACE_TEXT("-ORBAMICollocation")))) 00752 { 00753 int ami_collocation = ACE_OS::atoi (current_arg); 00754 if (ami_collocation) 00755 this->orb_params ()->ami_collication (true); 00756 else 00757 this->orb_params ()->ami_collication (false); 00758 00759 arg_shifter.consume_arg (); 00760 } 00761 else if (0 != (current_arg = arg_shifter.get_the_parameter 00762 (ACE_TEXT("-ORBResources")))) 00763 { 00764 ACE_DEBUG ((LM_WARNING, 00765 ACE_TEXT ("\"-ORBResources\" has been ") 00766 ACE_TEXT ("deprecated.\n"))); 00767 00768 arg_shifter.consume_arg (); 00769 } 00770 else if (0 != (current_arg = arg_shifter.get_the_parameter 00771 (ACE_TEXT("-ORBLogFile")))) 00772 { 00773 // redirect all ACE_DEBUG and ACE_ERROR output to a file 00774 // USAGE: -ORBLogFile <file> 00775 // default: if <file> is present = append 00776 // if <file> is not present = create 00777 00778 const ACE_TCHAR *file_name = current_arg; 00779 arg_shifter.consume_arg (); 00780 00781 // would rather use ACE_OSTREAM_TYPE out here.. 00782 // but need ACE_FSTREAM_TYPE to call ->open(...) 00783 // and haven't found such a macro to rep FILE* and/or fstream* 00784 00785 #if defined (ACE_LACKS_IOSTREAM_TOTALLY) 00786 00787 FILE* output_stream = ACE_OS::fopen (file_name, ACE_TEXT ("a")); 00788 00789 ACE_LOG_MSG->msg_ostream (output_stream, 1); 00790 00791 #else /* ! ACE_LACKS_IOSTREAM_TOTALLY */ 00792 00793 ofstream* output_stream = 0; 00794 00795 // 00796 // note: we are allocating dynamic memory here....but 00797 // I assume it will persist for the life of the program 00798 // 00799 00800 ACE_NEW_THROW_EX (output_stream, 00801 ofstream (), 00802 CORBA::NO_MEMORY ( 00803 CORBA::SystemException::_tao_minor_code ( 00804 TAO_ORB_CORE_INIT_LOCATION_CODE, 00805 ENOMEM), 00806 CORBA::COMPLETED_NO)); 00807 00808 output_stream->open (ACE_TEXT_ALWAYS_CHAR (file_name), 00809 ios::out | ios::app); 00810 00811 if (!output_stream->bad ()) 00812 { 00813 ACE_LOG_MSG->msg_ostream (output_stream, 1); 00814 } 00815 00816 #endif /* ACE_LACKS_IOSTREAM_TOTALLY */ 00817 00818 ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR | ACE_Log_Msg::LOGGER); 00819 ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM); 00820 00821 } 00822 else if (0 != (current_arg = arg_shifter.get_the_parameter 00823 (ACE_TEXT("-ORBVerboseLogging")))) 00824 { 00825 unsigned long verbose_logging = ACE_OS::atoi (current_arg); 00826 00827 arg_shifter.consume_arg (); 00828 00829 typedef void (ACE_Log_Msg::*PTMF)(u_long); 00830 PTMF flagop = &ACE_Log_Msg::set_flags; 00831 u_long value; 00832 00833 switch (verbose_logging) 00834 { 00835 case 0: 00836 flagop = &ACE_Log_Msg::clr_flags; 00837 value = ACE_Log_Msg::VERBOSE | ACE_Log_Msg::VERBOSE_LITE; 00838 break; 00839 case 1: 00840 value = ACE_Log_Msg::VERBOSE_LITE; break; 00841 default: 00842 value = ACE_Log_Msg::VERBOSE; break; 00843 } 00844 00845 (ACE_LOG_MSG->*flagop)(value); 00846 } 00847 else if (0 != (current_arg = arg_shifter.get_the_parameter 00848 (ACE_TEXT("-ORBUseIMR")))) 00849 { 00850 // Use IR or not. 00851 this->use_implrepo_ = ACE_OS::atoi (current_arg); 00852 00853 arg_shifter.consume_arg (); 00854 } 00855 else if (0 != (current_arg = arg_shifter.get_the_parameter 00856 (ACE_TEXT("-ORBIMREndpointsInIOR")))) 00857 { 00858 this->imr_endpoints_in_ior_ = ACE_OS::atoi (current_arg); 00859 00860 arg_shifter.consume_arg (); 00861 } 00862 else if (0 != (current_arg = arg_shifter.get_the_parameter 00863 (ACE_TEXT("-ORBid")))) 00864 { 00865 // The ORBid is actually set in ORB_init(), and then passed 00866 // to the TAO_ORB_Core() constructor. However, in the case 00867 // where the ORBid third argument to ORB_init() is not zero, 00868 // any "-ORBid" arguments in the argv argument list are 00869 // supposed to be ignored, according to the CORBA spec. As 00870 // such, "-ORBid" must be removed from the argument list 00871 // since ORB_init() must remove all "-ORB" option 00872 // arguments. 00873 00874 // We obtain a lock on the ORB table when setting the 00875 // ORBid. For this reason we should *not* set the ORBid 00876 // here. CORBA::ORB_init() does all of the proper locking 00877 // and setting. 00878 00879 arg_shifter.consume_arg (); 00880 } 00881 else if (0 != (current_arg = arg_shifter.get_the_parameter 00882 (ACE_TEXT("-ORBServerId")))) 00883 { 00884 // The this->server_id_ is to uniquely identify a server to 00885 // an IMR. 00886 // Fill in later. 00887 this->server_id_.set(ACE_TEXT_ALWAYS_CHAR(current_arg)); 00888 00889 arg_shifter.consume_arg (); 00890 } 00891 else if (0 != (current_arg = arg_shifter.get_the_parameter 00892 (ACE_TEXT("-ORBLingerTimeout")))) 00893 { 00894 linger = ACE_OS::atoi (current_arg); 00895 00896 arg_shifter.consume_arg (); 00897 } 00898 else if (0 != (current_arg = arg_shifter.get_the_parameter 00899 (ACE_TEXT("-ORBEndpoint")))) 00900 { 00901 // Each "endpoint" is of the form: 00902 // 00903 // protocol://V.v@addr1,addr2,...,addrN 00904 // 00905 // or: 00906 // 00907 // protocol://addr1,addr2,...,addrN 00908 // 00909 // where "V.v" is an optional protocol version for each 00910 // addr. All endpoint strings should be of the above 00911 // form(s). 00912 // 00913 // Multiple sets of endpoint may be seperated by a semi-colon `;'. 00914 // For example: 00915 // 00916 // corbaloc:space:2001,1.2@odyssey:2010;uiop://foo,bar 00917 // 00918 // All endpoint strings should be of the above form(s). 00919 00920 this->set_endpoint_helper (TAO_DEFAULT_LANE, 00921 ACE_TEXT_ALWAYS_CHAR (current_arg) 00922 ); 00923 00924 arg_shifter.consume_arg (); 00925 } 00926 else if (0 != (current_arg = arg_shifter.get_the_parameter 00927 (ACE_TEXT("-ORBListenEndpoints")))) 00928 { 00929 // This option is similar to the -ORBEndPoint option. May be 00930 // ORBEndpoint option will be deprecated in future. But, for 00931 // now, I (Priyanka) am leaving so that both options can be 00932 // used. 00933 00934 this->set_endpoint_helper (TAO_DEFAULT_LANE, 00935 ACE_TEXT_ALWAYS_CHAR (current_arg) 00936 ); 00937 00938 arg_shifter.consume_arg (); 00939 } 00940 else if ((0 != (current_arg = arg_shifter.get_the_parameter 00941 (ACE_TEXT("-ORBLaneEndpoint")))) || 00942 (0 != (current_arg = arg_shifter.get_the_parameter 00943 (ACE_TEXT("-ORBLaneListenEndpoints"))))) 00944 { 00945 // This option is similar to the -ORBEndPoint option but 00946 // specifies endpoints for each lane. 00947 00948 if (arg_shifter.is_option_next ()) 00949 return -1; 00950 00951 ACE_CString lane (ACE_TEXT_ALWAYS_CHAR (current_arg)); 00952 arg_shifter.consume_arg (); 00953 00954 if (arg_shifter.is_option_next ()) 00955 return -1; 00956 00957 ACE_CString endpoints (ACE_TEXT_ALWAYS_CHAR 00958 (arg_shifter.get_current ())); 00959 arg_shifter.consume_arg (); 00960 00961 this->set_endpoint_helper (lane, 00962 endpoints 00963 ); 00964 } 00965 else if (0 != (current_arg = arg_shifter.get_the_parameter 00966 (ACE_TEXT("-ORBNoProprietaryActivation")))) 00967 { 00968 // This option can be used to set to not use any proprietary 00969 // activation framework. The only TAO proprietary activation 00970 // framework is IMR. So, by setting this option in TAO, the 00971 // IMR shouldnt be used .. even if the ORBUseIMR option is 00972 // set. 00973 // Fill in later 00974 // @@ To do later: Priyanka. 00975 00976 throw ::CORBA::NO_IMPLEMENT (); 00977 } 00978 else if (0 != (current_arg = arg_shifter.get_the_parameter 00979 (ACE_TEXT("-ORBUseSharedProfile")))) 00980 { 00981 this->orb_params ()->shared_profile 00982 (ACE_OS::atoi (current_arg)); 00983 00984 arg_shifter.consume_arg (); 00985 } 00986 else if (0 != (current_arg = arg_shifter.get_the_parameter 00987 (ACE_TEXT("-ORBNegotiateCodesets")))) 00988 { 00989 negotiate_codesets = 00990 (ACE_OS::atoi (current_arg)); 00991 00992 arg_shifter.consume_arg (); 00993 } 00994 else if (0 != (current_arg = arg_shifter.get_the_parameter 00995 (ACE_TEXT("-ORBUseParallelConnects")))) 00996 { 00997 use_parallel_connects = ACE_OS::atoi (current_arg); 00998 arg_shifter.consume_arg (); 00999 } 01000 else if (0 != (current_arg = arg_shifter.get_the_parameter 01001 (ACE_TEXT("-ORBParallelConnectDelay")))) 01002 { 01003 this->orb_params ()->parallel_connect_delay 01004 (ACE_OS::atoi (current_arg)); 01005 arg_shifter.consume_arg (); 01006 } 01007 else if (0 != (current_arg = arg_shifter.get_the_parameter 01008 (ACE_TEXT("-ORBSingleReadOptimization")))) 01009 { 01010 this->orb_params ()->single_read_optimization 01011 (ACE_OS::atoi (current_arg)); 01012 01013 arg_shifter.consume_arg (); 01014 } 01015 else if (0 != (current_arg = arg_shifter.get_the_parameter 01016 (ACE_TEXT("-ORBDisableRTCollocation")))) 01017 { 01018 int disable_rt_collocation = ACE_OS::atoi (current_arg); 01019 if (disable_rt_collocation) 01020 this->orb_params ()->disable_rt_collocation_resolver (true); 01021 else 01022 this->orb_params ()->disable_rt_collocation_resolver (false); 01023 01024 arg_shifter.consume_arg (); 01025 } 01026 else if (0 != (current_arg = arg_shifter.get_the_parameter 01027 (ACE_TEXT("-ORBUseLocalMemoryPool")))) 01028 { 01029 this->use_local_memory_pool_ = (0 != ACE_OS::atoi (current_arg)); 01030 01031 arg_shifter.consume_arg (); 01032 } 01033 else if (0 != (current_arg = arg_shifter.get_the_parameter 01034 (ACE_TEXT("-ORBMaxMessageSize")))) 01035 { 01036 this->orb_params_.max_message_size (ACE_OS::atoi (current_arg)); 01037 01038 arg_shifter.consume_arg (); 01039 } 01040 01041 //////////////////////////////////////////////////////////////// 01042 // catch any unknown -ORB args // 01043 //////////////////////////////////////////////////////////////// 01044 else if (arg_shifter.cur_arg_strncasecmp (ACE_TEXT("-ORB")) != -1) 01045 { 01046 if (TAO_debug_level > 0) 01047 { 01048 current_arg = arg_shifter.get_current (); 01049 ACE_ERROR ((LM_ERROR, 01050 ACE_TEXT ("ERROR: Unknown \"-ORB\" option ") 01051 ACE_TEXT ("<%s>.\n"), 01052 ((current_arg == 0) ? ACE_TEXT("<NULL>") 01053 : current_arg))); 01054 } 01055 01056 throw ::CORBA::BAD_PARAM ( 01057 CORBA::SystemException::_tao_minor_code ( 01058 TAO_ORB_CORE_INIT_LOCATION_CODE, 01059 EINVAL), 01060 CORBA::COMPLETED_NO); 01061 } 01062 01063 //////////////////////////////////////////////////////////////// 01064 // ok, we can't interpret this argument, move to next argument// 01065 //////////////////////////////////////////////////////////////// 01066 else 01067 { 01068 // Any arguments that don't match are ignored so that the 01069 // caller can still use them. 01070 arg_shifter.ignore_arg (); 01071 } 01072 } 01073 01074 const char *env_endpoint = 01075 ACE_OS::getenv ("TAO_ORBENDPOINT"); 01076 01077 if (env_endpoint != 0) 01078 { 01079 int result = 01080 this->orb_params ()->add_endpoints (TAO_DEFAULT_LANE, 01081 env_endpoint); 01082 01083 if (result != 0) 01084 { 01085 if (TAO_debug_level > 0) 01086 { 01087 ACE_ERROR ((LM_ERROR, 01088 ACE_TEXT ("ERROR: Environment variable ") 01089 ACE_TEXT ("TAO_ORBENDPOINT set to invalid value ") 01090 ACE_TEXT ("<%s>.\n"), 01091 env_endpoint)); 01092 } 01093 01094 throw ::CORBA::BAD_PARAM ( 01095 CORBA::SystemException::_tao_minor_code ( 01096 TAO_ORB_CORE_INIT_LOCATION_CODE, 01097 EINVAL), 01098 CORBA::COMPLETED_NO); 01099 } 01100 } 01101 01102 #if defined (SIGPIPE) && !defined (ACE_LACKS_UNIX_SIGNALS) 01103 // There's really no way to deal with this in a portable manner, so 01104 // we just have to suck it up and get preprocessor conditional and 01105 // ugly. 01106 // 01107 // Impractical to have each call to the ORB protect against the 01108 // implementation artifact of potential writes to dead connections, 01109 // as it'd be way expensive. Do it here; who cares about SIGPIPE in 01110 // these kinds of applications, anyway? 01111 (void) ACE_OS::signal (SIGPIPE, (ACE_SignalHandler) SIG_IGN); 01112 #endif /* SIGPIPE */ 01113 01114 01115 // Calling the open method here so that the svc.conf file is 01116 // opened and TAO_default_resource_factory::init () is called by the 01117 // time this method is called. 01118 this->parser_registry_.open (this); 01119 01120 // Initialize the pointers to resources in the ORB Core instance, 01121 // e.g., reactor, connector, etc. Must do this after we open 01122 // services because we'll load the factory from there. 01123 TAO_Resource_Factory *trf = this->resource_factory (); 01124 01125 if (trf == 0) 01126 { 01127 ACE_ERROR ((LM_ERROR, 01128 ACE_TEXT ("(%P|%t) %p\n"), 01129 ACE_TEXT ("ORB Core unable to find a ") 01130 ACE_TEXT ("Resource Factory instance"))); 01131 throw ::CORBA::INTERNAL ( 01132 CORBA::SystemException::_tao_minor_code ( 01133 TAO_ORB_CORE_INIT_LOCATION_CODE, 01134 0), 01135 CORBA::COMPLETED_NO); 01136 } 01137 01138 // Set whether or not to use the local memory pool for the cdr allocators. 01139 01140 trf->use_local_memory_pool (this->use_local_memory_pool_); 01141 01142 // @@ ???? 01143 // Make sure the reactor is initialized... 01144 ACE_Reactor *reactor = this->reactor (); 01145 if (reactor == 0) 01146 { 01147 ACE_ERROR ((LM_ERROR, 01148 ACE_TEXT ("(%P|%t) %p\n"), 01149 ACE_TEXT ("ORB Core unable to initialize reactor"))); 01150 throw ::CORBA::INITIALIZE ( 01151 CORBA::SystemException::_tao_minor_code ( 01152 TAO_ORB_CORE_INIT_LOCATION_CODE, 01153 0), 01154 CORBA::COMPLETED_NO); 01155 } 01156 01157 TAO_Server_Strategy_Factory *ssf = this->server_factory (); 01158 01159 if (ssf == 0) 01160 { 01161 ACE_ERROR ((LM_ERROR, 01162 ACE_TEXT ("(%P|%t) %p\n"), 01163 ACE_TEXT ("ORB Core unable to find a ") 01164 ACE_TEXT ("Server Strategy Factory instance"))); 01165 throw ::CORBA::INTERNAL ( 01166 CORBA::SystemException::_tao_minor_code ( 01167 TAO_ORB_CORE_INIT_LOCATION_CODE, 01168 0), 01169 CORBA::COMPLETED_NO); 01170 } 01171 01172 ssf->open (this); 01173 01174 // Open the ObjectKey_Table 01175 (void) this->object_key_table_.init (this); 01176 01177 // Obtain the timeout value for the thread-per-connection model 01178 this->thread_per_connection_use_timeout_ = 01179 ssf->thread_per_connection_timeout (this->thread_per_connection_timeout_); 01180 01181 if (thread_per_connection_use_timeout_ == -1) 01182 { 01183 if (ACE_OS::strcasecmp (TAO_DEFAULT_THREAD_PER_CONNECTION_TIMEOUT, 01184 "INFINITE") == 0) 01185 { 01186 this->thread_per_connection_use_timeout_ = 0; 01187 } 01188 else 01189 { 01190 this->thread_per_connection_use_timeout_ = 1; 01191 int milliseconds = 01192 ACE_OS::atoi (TAO_DEFAULT_THREAD_PER_CONNECTION_TIMEOUT); 01193 // Use a temporary to obtain automatic normalization. 01194 this->thread_per_connection_timeout_ = 01195 ACE_Time_Value (0, 1000 * milliseconds); 01196 } 01197 } 01198 if (this->thread_per_connection_use_timeout_ == 0) 01199 { 01200 // Do not wait for the server threads because they may block 01201 // forever. 01202 this->tm_.wait_on_exit (0); 01203 } 01204 01205 // Initialize the "ORB" pseudo-object now. 01206 this->orb_ = CORBA::ORB::_tao_make_ORB (this); 01207 01208 // This should probably move into the ORB Core someday rather then 01209 // being done at this level. 01210 this->orb_->_use_omg_ior_format (use_ior); 01211 01212 // Set all kinds of orb parameters whose setting needed to be 01213 // deferred until after the service config entries had been 01214 // determined. 01215 01216 this->orb_params ()->service_port (TAO::MCAST_NAMESERVICE, ns_port); 01217 01218 if (ns_port != 0) 01219 { 01220 static char const mcast_fmt[] = "mcast://:%d::"; 01221 static size_t const PORT_BUF_SIZE = 256; 01222 01223 char def_init_ref[PORT_BUF_SIZE] = { 0 }; 01224 01225 ACE_OS::snprintf (def_init_ref, 01226 PORT_BUF_SIZE, 01227 mcast_fmt, 01228 ns_port); 01229 01230 this->orb_params ()->default_init_ref (def_init_ref); 01231 } 01232 01233 this->orb_params ()->service_port (TAO::MCAST_TRADINGSERVICE, ts_port); 01234 this->orb_params ()->service_port (TAO::MCAST_IMPLREPOSERVICE, ir_port); 01235 01236 this->orb_params ()->use_dotted_decimal_addresses (dotted_decimal_addresses); 01237 // When caching incoming transports don't use the host name if 01238 // -ORBDottedDecimalAddresses or -ORBNoServerSideNameLookups is true. 01239 this->orb_params ()->cache_incoming_by_dotted_decimal_address 01240 (no_server_side_name_lookups 01241 || dotted_decimal_addresses); 01242 01243 this->orb_params ()->use_parallel_connects 01244 (use_parallel_connects != 0); 01245 01246 this->orb_params ()->linger (linger); 01247 this->orb_params ()->nodelay (nodelay); 01248 this->orb_params ()->sock_keepalive (so_keepalive); 01249 this->orb_params ()->sock_dontroute (so_dontroute); 01250 if (rcv_sock_size >= 0) 01251 this->orb_params ()->sock_rcvbuf_size (rcv_sock_size); 01252 if (snd_sock_size >= 0) 01253 this->orb_params ()->sock_sndbuf_size (snd_sock_size); 01254 if (cdr_tradeoff >= 0) 01255 this->orb_params ()->cdr_memcpy_tradeoff (cdr_tradeoff); 01256 01257 this->orb_params ()->std_profile_components (std_profile_components); 01258 01259 this->orb_params ()->negotiate_codesets (negotiate_codesets); 01260 01261 if (this->codeset_manager()) 01262 this->codeset_manager_->open(); 01263 else 01264 if (TAO_debug_level > 0) 01265 ACE_DEBUG ((LM_DEBUG, 01266 ACE_TEXT("TAO (%P|%t) ORB_Core: ") 01267 ACE_TEXT("Codeset Manager not available\n"))); 01268 01269 // Set up the pluggable protocol infrastructure. First get a 01270 // pointer to the protocol factories set, then obtain pointers to 01271 // all factories loaded by the service configurator. 01272 // Load all protocol factories! 01273 if (trf->init_protocol_factories () == -1) 01274 throw ::CORBA::INITIALIZE ( 01275 CORBA::SystemException::_tao_minor_code ( 01276 TAO_ORB_CORE_INIT_LOCATION_CODE, 01277 0), 01278 CORBA::COMPLETED_NO); 01279 01280 // init the ORB core's pointer 01281 this->protocol_factories_ = trf->get_protocol_factories (); 01282 01283 // Initialize the flushing strategy 01284 this->flushing_strategy_ = trf->create_flushing_strategy (); 01285 01286 // Look in the service repository for an instance of the Protocol Hooks. 01287 const char *protocols_hooks_name = this->orb_params ()->protocols_hooks_name (); 01288 01289 this->protocols_hooks_ = 01290 ACE_Dynamic_Service<TAO_Protocols_Hooks>::instance 01291 (this->configuration (), 01292 ACE_TEXT_CHAR_TO_TCHAR (protocols_hooks_name)); 01293 01294 if (this->protocols_hooks_ != 0) 01295 { 01296 // Initialize the protocols hooks instance. 01297 this->protocols_hooks_->init_hooks (this); 01298 } 01299 01300 // If available, allow the Adapter Factory to setup. 01301 ACE_Service_Object *adapter_factory = 01302 ACE_Dynamic_Service<ACE_Service_Object>::instance ( 01303 this->configuration (), 01304 this->orb_params ()->poa_factory_name ()); 01305 01306 if (adapter_factory != 0) 01307 { 01308 adapter_factory->init (0, 0); 01309 } 01310 01311 // Look in the service repository for an instance of the 01312 // Network Priority Protocol Hooks. 01313 const ACE_CString &network_priority_protocols_hooks_name = 01314 TAO_ORB_Core_Static_Resources::instance ()-> 01315 network_priority_protocols_hooks_name_; 01316 01317 this->network_priority_protocols_hooks_ = 01318 ACE_Dynamic_Service<TAO_Network_Priority_Protocols_Hooks>::instance 01319 (this->configuration (), 01320 ACE_TEXT_CHAR_TO_TCHAR (network_priority_protocols_hooks_name.c_str())); 01321 01322 if (this->network_priority_protocols_hooks_ != 0) 01323 { 01324 // Initialize the protocols hooks instance. 01325 this->network_priority_protocols_hooks_->init_hooks (this); 01326 } 01327 01328 // As a last step perform initializations of the service callbacks 01329 this->services_callbacks_init (); 01330 01331 // The ORB has been initialized, meaning that the ORB is no longer 01332 // in the shutdown state. 01333 this->has_shutdown_ = false; 01334 01335 return 0; 01336 } |
|
Return a pointer to the -ORBInitRef map.
Definition at line 172 of file ORB_Core.inl. References init_ref_map_. Referenced by CORBA::ORB::resolve_initial_references().
00173 { 00174 return &this->init_ref_map_; 00175 } |
|
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 1955 of file ORB_Core.cpp. References TAO_Stub::base_profiles(), initialize_object_i(), and CORBA::Object_ptr. Referenced by CORBA::Object::tao_object_initialize().
01956 { 01957 // @@ What about forwarding. With this approach we are never forwarded 01958 // when we use collocation! 01959 const TAO_MProfile &mprofile = 01960 stub->base_profiles (); 01961 01962 return initialize_object_i (stub, mprofile); 01963 } |
|
Common code from ::initialize_object and ::reinitialize_object.
Definition at line 1974 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().
01976 { 01977 CORBA::Long retval = 0; 01978 TAO_ORB_Core_Auto_Ptr collocated_orb_core; 01979 01980 { 01981 // Lock the ORB_Table against concurrent modification while we 01982 // iterate through the ORBs. 01983 ACE_MT (ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, 01984 guard, 01985 TAO::ORB_Table::instance()->lock (), 01986 0)); 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 retval = ar->initialize_collocated_object (stub); 02011 } 02012 02013 return retval; 02014 } |
|
This allocator is always global and has no locks. It is intended for allocating the buffers used in *incoming* CDR streams. Definition at line 2718 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().
02719 { 02720 return this->lane_resources ().input_cdr_buffer_allocator (); 02721 } |
|
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 2712 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().
02713 { 02714 return this->lane_resources ().input_cdr_dblock_allocator (); 02715 } |
|
This allocator is always global and has no locks. It is intended for allocating the buffers used in *incoming* CDR streams. Definition at line 2724 of file ORB_Core.cpp. References TAO_Thread_Lane_Resources::input_cdr_msgblock_allocator(), and lane_resources(). Referenced by TAO_GIOP_Message_Base::make_queued_data(), and CORBA::Object::tao_object_initialize().
02725 { 02726 return this->lane_resources ().input_cdr_msgblock_allocator (); 02727 } |
|
Get the IOR Interceptor adapter. If not created, this method will try to create one. Definition at line 3128 of file ORB_Core.cpp. References ACE_GUARD_RETURN, ACE_TEXT_CHAR_TO_TCHAR, configuration(), TAO_IORInterceptor_Adapter_Factory::create(), ior_interceptor_adapter_, iorinterceptor_adapter_factory_name(), and TAO_SYNCH_MUTEX. Referenced by add_interceptor().
03129 { 03130 if (this->ior_interceptor_adapter_ == 0) 03131 { 03132 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, 03133 ace_mon, 03134 this->lock_, 03135 0); 03136 03137 if (this->ior_interceptor_adapter_ == 0) 03138 { 03139 try 03140 { 03141 TAO_IORInterceptor_Adapter_Factory * ior_ap_factory = 03142 ACE_Dynamic_Service<TAO_IORInterceptor_Adapter_Factory>::instance 03143 (this->configuration (), 03144 ACE_TEXT_CHAR_TO_TCHAR (TAO_ORB_Core::iorinterceptor_adapter_factory_name ())); 03145 03146 if (ior_ap_factory) 03147 { 03148 this->ior_interceptor_adapter_ = ior_ap_factory->create (); 03149 } 03150 } 03151 catch (const ::CORBA::Exception& ex) 03152 { 03153 ex._tao_print_exception ( 03154 "Cannot initialize the ior_interceptor_adapter \n"); 03155 } 03156 } 03157 } 03158 03159 return this->ior_interceptor_adapter_; 03160 } |
|
Gets the value of TAO_ORB_Core::iorinterceptor_adapter_factory_name_.
Definition at line 1467 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::iorinterceptor_adapter_factory_name_.
01468 { 01469 return TAO_ORB_Core_Static_Resources::instance ()->iorinterceptor_adapter_factory_name_.c_str(); 01470 } |
|
Sets the value of TAO_ORB_Core::iorinterceptor_adapter_factory_name_.
Definition at line 1461 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().
01462 { 01463 TAO_ORB_Core_Static_Resources::instance ()->iorinterceptor_adapter_factory_name_ = name; 01464 } |
|
See if we have a collocated address, if yes, return the POA associated with the address. Definition at line 2041 of file ORB_Core.cpp. References TAO_Thread_Lane_Resources_Manager::is_collocated(), and thread_lane_resources_manager(). Referenced by is_collocation_enabled().
02042 { 02043 // @@ Lots of issues arise when dealing with collocation. What about 02044 // forwarding or what if this is a multi-profile IOR where the order is 02045 // significant and only one of the profiles is collocated. For example 02046 // when using a multiple servers for fault tolerance. For now, we just 02047 // look through all profiles and if any are colocated then we assume 02048 // the object is collocated. 02049 // @@ Note, if collocated we can not be forwarded! 02050 // Also, acceptor_registry_->is_collocated (...) will check the 02051 // address (ORB Host) but not the object_key. This should be checked 02052 // also. 02053 02054 return this->thread_lane_resources_manager ().is_collocated (mprofile); 02055 } |
|
Checks to see whether collocation optimizations have to be applied on objects in the other_orb Definition at line 2017 of file ORB_Core.cpp. References TAO_MProfile::add_profile(), is_collocated(), optimize_collocation_objects(), service_profile_selection(), and use_global_collocation(). Referenced by create_object(), and initialize_object_i().
02019 { 02020 TAO_MProfile mp_temp; 02021 02022 TAO_Profile* profile = 0; 02023 if (this->service_profile_selection(mp, profile) && profile) 02024 { 02025 mp_temp.add_profile(profile); 02026 } 02027 02028 if (!orb_core->optimize_collocation_objects ()) 02029 return 0; 02030 02031 if (!orb_core->use_global_collocation () && orb_core != this) 02032 return 0; 02033 02034 if (!orb_core->is_collocated (profile ? mp_temp : mp)) 02035 return 0; 02036 02037 return 1; 02038 } |
|
Verify condition for permanent forward is given, both parameters must provide group attributes. Definition at line 585 of file ORB_Core.inl. 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().
00587 { 00588 const TAO_Service_Callbacks *service_callback = 00589 this->fault_tolerance_service ().service_callback (); 00590 00591 CORBA::Boolean const permanent_forward_condition = 00592 service_callback && 00593 service_callback->is_permanent_forward_condition (obj, 00594 service_context); 00595 00596 return permanent_forward_condition; 00597 } |
|
For details on how this is used please see the FT service Definition at line 114 of file ORB_Core.inl. References ft_service_, TAO_Service_Callbacks::is_profile_equivalent(), and TAO_Fault_Tolerance_Service::service_callback(). Referenced by TAO_Profile::is_equivalent_hook().
00116 { 00117 TAO_Service_Callbacks::Profile_Equivalence retval 00118 = TAO_Service_Callbacks::DONT_KNOW; 00119 00120 if (this->ft_service_.service_callback ()) 00121 { 00122 retval = 00123 this->ft_service_.service_callback ()->is_profile_equivalent (this_p, 00124 that_p); 00125 } 00126 00127 return retval; 00128 } |
|
Get access to the thread lane resources.
Definition at line 2336 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().
02337 { 02338 return this->thread_lane_resources_manager ().lane_resources (); 02339 } |
|
Get access to the leader_follower class.
Definition at line 2060 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().
02061 { 02062 return this->lane_resources ().leader_follower (); 02063 } |
|
Get access to the leader follower strategy.
Definition at line 2066 of file ORB_Core.cpp. References TAO_Thread_Lane_Resources_Manager::lf_strategy(), and thread_lane_resources_manager(). Referenced by TAO_GIOP_Message_Base::process_request_message(), and run().
02067 { 02068 return this->thread_lane_resources_manager ().lf_strategy (); 02069 } |
|
List all the service known by the ORB.
Definition at line 2654 of file ORB_Core.cpp. References TAO_Seq_Var_Base_T< T >::_retn(), 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().
02655 { 02656 // Unsupported initial services should NOT be included in the below list! 02657 static const char *initial_services[] = { TAO_LIST_OF_INITIAL_SERVICES }; 02658 // Make sure the "terminating" zero is the last array element so 02659 // that there is a stop condition when iterating through the list. 02660 02661 static const size_t initial_services_size = 02662 sizeof (initial_services) / sizeof (initial_services[0]); 02663 02664 const size_t total_size = 02665 initial_services_size 02666 + this->init_ref_map_.size () 02667 + this->object_ref_table_.current_size (); 02668 02669 CORBA::ORB::ObjectIdList *tmp = 0; 02670 02671 ACE_NEW_THROW_EX (tmp, 02672 CORBA::ORB::ObjectIdList ( 02673 static_cast<CORBA::ULong> (total_size)), 02674 CORBA::NO_MEMORY ()); 02675 02676 CORBA::ORB::ObjectIdList_var list (tmp); 02677 list->length (static_cast<CORBA::ULong> (total_size)); 02678 02679 CORBA::ULong index = 0; 02680 // Index for ObjectIdList members. 02681 02682 // Iterate over the registered initial references. 02683 for (index = 0; index < initial_services_size; ++index) 02684 list[index] = initial_services[index]; 02685 02686 // Now iterate over the initial references created by the user and 02687 // add them to the sequence. 02688 02689 // References registered via 02690 // ORBInitInfo::register_initial_reference(). 02691 TAO_Object_Ref_Table::iterator const obj_ref_end = 02692 this->object_ref_table_.end (); 02693 02694 for (TAO_Object_Ref_Table::iterator i = this->object_ref_table_.begin (); 02695 i != obj_ref_end; 02696 ++i, ++index) 02697 list[index] = CORBA::string_dup ((*i).first.in ()); 02698 02699 // References registered via INS. 02700 InitRefMap::iterator const end = this->init_ref_map_.end (); 02701 02702 for (InitRefMap::iterator j = this-> init_ref_map_.begin (); 02703 j != end; 02704 ++j, ++index) 02705 list[index] = (*j).second.c_str (); 02706 02707 return list._retn (); 02708 } |
|
Call the libraries to handover the validators if they havent registered yet with the list of validators. Definition at line 1883 of file ORB_Core.cpp. References ACE_TEXT, bidir_adapter_, configuration(), and TAO_BiDir_Adapter::load_policy_validators().
01884 { 01885 if (this->bidir_adapter_ == 0) 01886 { 01887 this->bidir_adapter_ = 01888 ACE_Dynamic_Service<TAO_BiDir_Adapter>::instance 01889 (this->configuration (), ACE_TEXT ("BiDirGIOP_Loader")); 01890 } 01891 01892 // Call the BiDir library if it has been loaded 01893 if (this->bidir_adapter_) 01894 this->bidir_adapter_->load_policy_validators (validator); 01895 } |
|
Return the locking strategy used for the data blocks.
Definition at line 34 of file ORB_Core.inl. References data_block_lock_, resource_factory(), and TAO_Resource_Factory::use_locked_data_blocks(). Referenced by TAO_Transport::handle_input_parse_data().
00035 { 00036 if (this->resource_factory ()->use_locked_data_blocks ()) 00037 return &this->data_block_lock_; 00038 00039 return 0; 00040 } |
|
Choose to be not a default ORB when there is more than one ORB.
Definition at line 185 of file ORB_Core.inl. References TAO::ORB_Table::instance(), and TAO::ORB_Table::not_default().
00186 { 00187 TAO::ORB_Table * const table = TAO::ORB_Table::instance (); 00188 table->not_default (orb_id); 00189 } |
|
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 102 of file ORB_Core.inl. 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().
00103 { 00104 CORBA::Boolean retval = false; 00105 if (this->ft_service_.service_callback ()) 00106 { 00107 retval = this->ft_service_.service_callback ()->object_is_nil (obj); 00108 } 00109 return retval; 00110 } |
|
Acceessor to the table that stores the object_keys.
Definition at line 61 of file ORB_Core.inl. References object_key_table_. Referenced by TAO_Profile::decode(), TAO_IIOP_Profile::parse_string_i(), TAO_Profile::TAO_Profile(), and TAO_Profile::~TAO_Profile().
00062 { 00063 return this->object_key_table_; 00064 } |
|
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 55 of file ORB_Core.inl. References object_ref_table_. Referenced by CORBA::ORB::register_initial_reference(), CORBA::ORB::resolve_initial_references(), and resolve_rt_orb().
00056 { 00057 return this->object_ref_table_; 00058 } |
|
|
|
Definition at line 198 of file ORB_Core.inl. References opt_for_collocation_.
00199 { 00200 return this->opt_for_collocation_; 00201 } |
|
Definition at line 192 of file ORB_Core.inl. References opt_for_collocation_. Referenced by is_collocation_enabled().
00193 { 00194 this->opt_for_collocation_ = opt; 00195 } |
|
Get pointer to the ORB.
Definition at line 154 of file ORB_Core.inl. References orb_. Referenced by TAO_Profile::get_policies(), TAO_ServerRequest::orb(), resolve_rir(), and TAO_Profile::verify_orb_configuration().
00155 { 00156 return this->orb_; 00157 } |
|
|
Return ORBid string.
Definition at line 335 of file ORB_Core.inl. References orbid_.
00336 { 00337 return this->orbid_; 00338 } |
|
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 434 of file ORB_Core.inl. References ACE_GUARD_RETURN, orbinitializer_registry_, orbinitializer_registry_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB_init().
00435 { 00436 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 00437 0); 00438 if (orbinitializer_registry_ == 0) 00439 { 00440 return this->orbinitializer_registry_i (); 00441 } 00442 return this->orbinitializer_registry_; 00443 } |
|
Return pointer to the orb initializer registry associated with this ORB core. Definition at line 1582 of file ORB_Core.cpp. References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_TEXT, configuration(), and orbinitializer_registry_. Referenced by orbinitializer_registry().
01583 { 01584 // @todo The ORBInitializer_Registry is supposed to be a singleton. 01585 01586 ACE_Service_Gestalt * const config = this->configuration (); 01587 01588 // If not, lookup it up. 01589 this->orbinitializer_registry_ = 01590 ACE_Dynamic_Service<TAO::ORBInitializer_Registry_Adapter>::instance 01591 (config, 01592 ACE_TEXT ("ORBInitializer_Registry")); 01593 01594 #if !defined (TAO_AS_STATIC_LIBS) 01595 // In case we build shared, try to load the PI Client library, in a 01596 // static build we just can't do this, so don't try it, lower layers 01597 // output an error then. 01598 if (this->orbinitializer_registry_ == 0) 01599 { 01600 config->process_directive ( 01601 ACE_DYNAMIC_SERVICE_DIRECTIVE ("ORBInitializer_Registry", 01602 "TAO_PI", 01603 "_make_ORBInitializer_Registry", 01604 "")); 01605 this->orbinitializer_registry_ = 01606 ACE_Dynamic_Service<TAO::ORBInitializer_Registry_Adapter>::instance 01607 (config, 01608 ACE_TEXT ("ORBInitializer_Registry")); 01609 } 01610 #endif /* !TAO_AS_STATIC_LIBS */ 01611 01612 return this->orbinitializer_registry_; 01613 } |
|
This allocator is always TSS and has no locks. It is intended for allocating the buffers used in *outgoing* CDR streams. Definition at line 2737 of file ORB_Core.cpp. References lane_resources(), and TAO_Thread_Lane_Resources::output_cdr_buffer_allocator().
02738 { 02739 return this->lane_resources ().output_cdr_buffer_allocator (); 02740 } |
|
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 2730 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_ServerRequest::send_cached_reply(), and TAO_ServerRequest::tao_send_reply_exception().
02731 { 02732 02733 return this->lane_resources ().output_cdr_dblock_allocator (); 02734 } |
|
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 2744 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_ServerRequest::send_cached_reply(), and TAO_ServerRequest::tao_send_reply_exception().
02745 { 02746 return this->lane_resources ().output_cdr_msgblock_allocator (); 02747 } |
|
Get the IOR parser registry.
Definition at line 239 of file ORB_Core.inl. References parser_registry_. Referenced by CORBA::ORB::string_to_object().
00240 { 00241 return &this->parser_registry_; 00242 } |
|
Set the pointer to the cached TAO::PICurrent object.
Definition at line 560 of file ORB_Core.inl. References CORBA::Object_ptr, and pi_current_.
00561 { 00562 // Not duplicated since the ORB Core's "object_ref_table" already 00563 // contains a duplicate of the PICurrent object. 00564 this->pi_current_ = current; 00565 } |
|
Return a pointer to the cached TAO::PICurrent object.
Definition at line 550 of file ORB_Core.inl. References pi_current_.
00551 { 00552 // A pointer/reference to PICurrent is cached in the ORB Core since 00553 // it is accessed in the critical path (i.e. the request invocation 00554 // path). Caching it prevents additional overhead to due object 00555 // resolution from occurring. 00556 return this->pi_current_; 00557 } |
|
Get the adapter named "RootPOA" and cache the result, this is an optimization for the POA. Definition at line 1816 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().
01817 { 01818 if (this->poa_adapter_ == 0) 01819 { 01820 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->lock_, 0); 01821 if (this->poa_adapter_ == 0) 01822 { 01823 this->poa_adapter_ = 01824 this->adapter_registry_.find_adapter ("RootPOA"); 01825 } 01826 } 01827 return this->poa_adapter_; 01828 } |
|
|
|
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 498 of file ORB_Core.inl. References policy_current_. Referenced by get_cached_policy_including_current(), get_policy_including_current(), and CORBA::ORB::resolve_policy_current().
00499 { 00500 return *this->policy_current_; 00501 } |
|
Return pointer to the policy factory registry associated with this ORB core. Definition at line 446 of file ORB_Core.inl. 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().
00447 { 00448 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 00449 0); 00450 if (policy_factory_registry_ == 0) 00451 { 00452 return this->policy_factory_registry_i (); 00453 } 00454 return this->policy_factory_registry_; 00455 } |
|
Return pointer to the policy factory registry associated with this ORB core. Definition at line 1551 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().
01552 { 01553 01554 TAO_PolicyFactory_Registry_Factory *loader = 01555 ACE_Dynamic_Service<TAO_PolicyFactory_Registry_Factory>::instance 01556 (this->configuration (), 01557 ACE_TEXT ("PolicyFactory_Loader")); 01558 01559 if (loader == 0) 01560 { 01561 this->configuration ()->process_directive ( 01562 ACE_DYNAMIC_SERVICE_DIRECTIVE("PolicyFactory_Loader", 01563 "TAO_PI", 01564 "_make_TAO_PolicyFactory_Loader", 01565 "")); 01566 loader = 01567 ACE_Dynamic_Service<TAO_PolicyFactory_Registry_Factory>::instance 01568 (this->configuration (), 01569 ACE_TEXT ("PolicyFactory_Loader")); 01570 } 01571 01572 if (loader != 0) 01573 { 01574 this->policy_factory_registry_ = 01575 loader->create (); 01576 } 01577 01578 return this->policy_factory_registry_; 01579 } |
|
Return the Policy_Manager for this ORB.
Definition at line 249 of file ORB_Core.inl. References policy_manager_. Referenced by get_cached_policy(), get_policy(), and CORBA::ORB::resolve_policy_manager().
00250 { 00251 return this->policy_manager_; 00252 } |
|
Get the protocol factories.
Definition at line 233 of file ORB_Core.inl. 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().
00234 { 00235 return TAO_OC_RETRIEVE (protocol_factories); 00236 } |
|
Returns pointer to the Protocols_Hooks.
|
|
Wrappers that forward the request to the concurrency strategy.
Definition at line 2824 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(), init(), 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().
02825 { 02826 return this->leader_follower ().reactor (); 02827 } |
|
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 1966 of file ORB_Core.cpp. References TAO_Stub::base_profiles(), TAO_Stub::forward_profiles(), and initialize_object_i(). Referenced by CORBA::Object::_set_policy_overrides().
01967 { 01968 return initialize_object_i (stub, stub->forward_profiles () 01969 ? *(stub->forward_profiles ()) 01970 : stub->base_profiles ()); 01971 } |
|
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 1840 of file ORB_Core.cpp. References request_dispatcher_.
01841 { 01842 // Assume ownership of the request dispatcher. 01843 TAO_Request_Dispatcher *tmp = this->request_dispatcher_; 01844 this->request_dispatcher_ = request_dispatcher; 01845 delete tmp; 01846 } |
|
Return the current request dispatcher strategy.
Definition at line 166 of file ORB_Core.inl. References request_dispatcher_. Referenced by TAO::Collocated_Invocation::invoke(), TAO_GIOP_Message_Base::process_locate_request(), and TAO_GIOP_Message_Base::process_request().
00167 { 00168 return this->request_dispatcher_; 00169 } |
|
Resolve the CodecFactory DLL.
Definition at line 387 of file ORB_Core.inl. References CORBA::Object::_duplicate(), ACE_GUARD_RETURN, CORBA::is_nil(), resolve_codecfactory_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00388 { 00389 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 00390 CORBA::Object::_nil ()); 00391 if (CORBA::is_nil (this->codec_factory_)) 00392 { 00393 this->resolve_codecfactory_i (); 00394 } 00395 return CORBA::Object::_duplicate (this->codec_factory_); 00396 } |
|
Obtain and cache the codec factory object reference.
Definition at line 2375 of file ORB_Core.cpp. References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_TEXT, codec_factory_, configuration(), TAO_Object_Loader::create_object(), and ACE_Service_Gestalt::process_directive(). Referenced by resolve_codecfactory().
02376 { 02377 TAO_Object_Loader *loader = 02378 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02379 (this->configuration (), 02380 ACE_TEXT ("CodecFactory_Loader")); 02381 02382 if (loader == 0) 02383 { 02384 this->configuration()->process_directive 02385 (ACE_DYNAMIC_SERVICE_DIRECTIVE("CodecFactory", 02386 "TAO_CodecFactory", 02387 "_make_TAO_CodecFactory_Loader", 02388 "")); 02389 loader = 02390 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02391 (this->configuration (), ACE_TEXT ("CodecFactory_Loader")); 02392 } 02393 02394 if (loader != 0) 02395 { 02396 this->codec_factory_ = 02397 loader->create_object (this->orb_, 0, 0); 02398 } 02399 } |
|
Resolve the Compression DLL.
Definition at line 399 of file ORB_Core.inl. References CORBA::Object::_duplicate(), ACE_GUARD_RETURN, CORBA::is_nil(), resolve_compression_manager_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00400 { 00401 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 00402 CORBA::Object::_nil ()); 00403 if (CORBA::is_nil (this->compression_manager_)) 00404 { 00405 this->resolve_compression_manager_i (); 00406 } 00407 return CORBA::Object::_duplicate (this->compression_manager_); 00408 } |
|
Obtain and cache the compression manager object reference.
Definition at line 2402 of file ORB_Core.cpp. References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_TEXT, compression_manager_, configuration(), TAO_Object_Loader::create_object(), and ACE_Service_Gestalt::process_directive(). Referenced by resolve_compression_manager().
02403 { 02404 TAO_Object_Loader *loader = 02405 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02406 (this->configuration (), 02407 ACE_TEXT ("Compression_Loader")); 02408 02409 if (loader == 0) 02410 { 02411 this->configuration()->process_directive 02412 (ACE_DYNAMIC_SERVICE_DIRECTIVE("Compression", 02413 "TAO_Compression", 02414 "_make_TAO_Compression_Loader", 02415 "")); 02416 loader = 02417 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02418 (this->configuration (), ACE_TEXT ("Compression_Loader")); 02419 } 02420 02421 if (loader != 0) 02422 { 02423 this->compression_manager_ = loader->create_object (this->orb_, 0, 0); 02424 } 02425 } |
|
Resolve the Dynamic Any Factory.
Definition at line 458 of file ORB_Core.inl. References CORBA::Object::_duplicate(), ACE_GUARD_RETURN, CORBA::is_nil(), resolve_dynanyfactory_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00459 { 00460 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 00461 CORBA::Object::_nil ()); 00462 if (CORBA::is_nil (this->dynany_factory_)) 00463 { 00464 this->resolve_dynanyfactory_i (); 00465 } 00466 return CORBA::Object::_duplicate (this->dynany_factory_); 00467 } |
|
Obtain and cache the dynamic any factory object reference.
Definition at line 2488 of file ORB_Core.cpp. References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_TEXT, configuration(), TAO_Object_Loader::create_object(), dynany_factory_, and ACE_Service_Gestalt::process_directive(). Referenced by resolve_dynanyfactory().
02489 { 02490 TAO_Object_Loader *loader = 02491 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02492 (this->configuration (), 02493 ACE_TEXT ("DynamicAny_Loader")); 02494 02495 if (loader == 0) 02496 { 02497 this->configuration ()->process_directive 02498 (ACE_DYNAMIC_SERVICE_DIRECTIVE("DynamicAny_Loader", 02499 "TAO_DynamicAny", 02500 "_make_TAO_DynamicAny_Loader", 02501 "")); 02502 loader = 02503 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02504 (this->configuration (), 02505 ACE_TEXT ("DynamicAny_Loader")); 02506 } 02507 02508 if (loader != 0) 02509 { 02510 this->dynany_factory_ = loader->create_object (this->orb_, 0, 0); 02511 } 02512 } |
|
Resolve the IOR Manipulation reference for this ORB.
Definition at line 470 of file ORB_Core.inl. References CORBA::Object::_duplicate(), ACE_GUARD_RETURN, CORBA::is_nil(), resolve_iormanipulation_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00471 { 00472 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 00473 CORBA::Object::_nil ()); 00474 if (CORBA::is_nil (this->ior_manip_factory_)) 00475 { 00476 this->resolve_iormanipulation_i (); 00477 } 00478 return CORBA::Object::_duplicate (this->ior_manip_factory_); 00479 } |
|
Resolve the IOR Table reference for this ORB.
Definition at line 482 of file ORB_Core.inl. References CORBA::Object::_duplicate(), ACE_GUARD_RETURN, CORBA::is_nil(), resolve_ior_table_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00483 { 00484 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 00485 CORBA::Object::_nil ()); 00486 if (CORBA::is_nil (this->ior_table_)) 00487 { 00488 this->resolve_ior_table_i (); 00489 } 00490 return CORBA::Object::_duplicate (this->ior_table_); 00491 } |
|
Obtain and cache the dynamic any factory object reference.
Definition at line 2541 of file ORB_Core.cpp. References TAO_Pseudo_Var_T< T >::_retn(), ACE_DYNAMIC_SERVICE_DIRECTIVE, 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().
02542 { 02543 TAO_Adapter_Factory *factory = 02544 ACE_Dynamic_Service<TAO_Adapter_Factory>::instance 02545 (this->configuration (), 02546 ACE_TEXT ("TAO_IORTable")); 02547 02548 if (factory == 0) 02549 { 02550 this->configuration ()->process_directive 02551 (ACE_DYNAMIC_SERVICE_DIRECTIVE("TAO_IORTable", 02552 "TAO_IORTable", 02553 "_make_TAO_Table_Adapter_Factory", 02554 "")); 02555 factory = 02556 ACE_Dynamic_Service<TAO_Adapter_Factory>::instance 02557 (this->configuration (), ACE_TEXT ("TAO_IORTable")); 02558 } 02559 02560 if (factory != 0) 02561 { 02562 ACE_Auto_Ptr <TAO_Adapter> iortable_adapter (factory->create (this)); 02563 iortable_adapter->open (); 02564 02565 CORBA::Object_var tmp_root = iortable_adapter->root (); 02566 02567 this->adapter_registry_.insert (iortable_adapter.get ()); 02568 02569 // It is now (exception) safe to release ownership from the auto pointers 02570 this->ior_table_= tmp_root._retn (); 02571 iortable_adapter.release (); 02572 } 02573 } |
|
Obtain and cache the IORManipulation factory object reference.
Definition at line 2515 of file ORB_Core.cpp. References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_TEXT, configuration(), TAO_Object_Loader::create_object(), ior_manip_factory_, and ACE_Service_Gestalt::process_directive(). Referenced by resolve_ior_manipulation().
02516 { 02517 TAO_Object_Loader *loader = 02518 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02519 (this->configuration (), 02520 ACE_TEXT ("IORManip_Loader")); 02521 02522 if (loader == 0) 02523 { 02524 this->configuration()->process_directive 02525 (ACE_DYNAMIC_SERVICE_DIRECTIVE("IORManip_Loader", 02526 "TAO_IORManip", 02527 "_make_TAO_IORManip_Loader", 02528 "")); 02529 loader = 02530 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02531 (this->configuration (), ACE_TEXT ("IORManip_Loader")); 02532 } 02533 02534 if (loader != 0) 02535 { 02536 this->ior_manip_factory_ = loader->create_object (this->orb_, 0, 0); 02537 } 02538 } |
|
Resolve the PICurrent.
Definition at line 373 of file ORB_Core.inl. References CORBA::Object::_duplicate(), ACE_GUARD_RETURN, CORBA::is_nil(), resolve_picurrent_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00374 { 00375 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 00376 CORBA::Object::_nil ()); 00377 if (CORBA::is_nil (this->pi_current_)) 00378 { 00379 this->resolve_picurrent_i (); 00380 } 00381 return CORBA::Object::_duplicate (this->pi_current_); 00382 } |
|
Obtain and cache the picurrent factory object reference.
Definition at line 2457 of file ORB_Core.cpp. References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_TEXT, configuration(), TAO_Object_Loader::create_object(), CORBA::Object_ptr, pi_current_, and ACE_Service_Gestalt::process_directive(). Referenced by resolve_picurrent().
02458 { 02459 TAO_Object_Loader *loader = 02460 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02461 (this->configuration (), 02462 ACE_TEXT ("PICurrent_Loader")); 02463 02464 if (loader == 0) 02465 { 02466 this->configuration ()->process_directive 02467 (ACE_DYNAMIC_SERVICE_DIRECTIVE("PICurrent_Loader", 02468 "TAO_PI", 02469 "_make_TAO_PICurrent_Loader", 02470 "")); 02471 loader = 02472 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02473 (this->configuration (), ACE_TEXT ("PICurrent_Loader")); 02474 } 02475 02476 if (loader != 0) 02477 { 02478 CORBA::Object_ptr pi = loader->create_object (this->orb_, 0, 0); 02479 02480 this->pi_current_ = pi; 02481 } 02482 } |
|
Resolve POA Current.
Definition at line 506 of file ORB_Core.inl. References CORBA::Object::_duplicate(), ACE_GUARD_RETURN, CORBA::is_nil(), resolve_poa_current_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00507 { 00508 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 00509 CORBA::Object::_nil ()); 00510 if (CORBA::is_nil (this->poa_current_.in ())) 00511 { 00512 this->resolve_poa_current_i (); 00513 } 00514 return CORBA::Object::_duplicate (this->poa_current_.in ()); 00515 } |
|
Obtain and cache the poa current.
Definition at line 2428 of file ORB_Core.cpp. References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_TEXT, configuration(), TAO_Object_Loader::create_object(), poa_current_, and ACE_Service_Gestalt::process_directive(). Referenced by resolve_poa_current().
02429 { 02430 TAO_Object_Loader *loader = 02431 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02432 (this->configuration(), 02433 ACE_TEXT ("TAO_POA_Current_Factory")); 02434 02435 if (loader == 0) 02436 { 02437 this->configuration()->process_directive 02438 (ACE_DYNAMIC_SERVICE_DIRECTIVE("TAO_POA_Current_Factory", 02439 "TAO_PortableServer", 02440 "_make_TAO_POA_Current_Factory", 02441 "")); 02442 loader = 02443 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02444 (this->configuration(), ACE_TEXT ("TAO_POA_Current_Factory")); 02445 } 02446 02447 if (loader != 0) 02448 { 02449 this->poa_current_ = loader->create_object (this->orb_, 0, 0); 02450 } 02451 } |
|
Resolve an initial reference via the -ORBInitRef and.
Definition at line 2597 of file ORB_Core.cpp. References CORBA::Object::_nil(), ACE_CString, 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().
02598 { 02599 // Get the table of initial references specified through 02600 // -ORBInitRef. 02601 ACE_CString ior; 02602 ACE_CString object_id ((const char *) name); 02603 02604 // Get the list of initial reference prefixes specified through 02605 // -ORBDefaultInitRef. 02606 CORBA::String_var default_init_ref = 02607 this->orb_params ()->default_init_ref (); 02608 02609 // Check if a DefaultInitRef was specified. 02610 if (ACE_OS::strlen (default_init_ref.in ()) != 0) 02611 { 02612 static const char corbaloc_prefix[] = "corbaloc:"; 02613 static const char mcast_prefix[] = "mcast:"; 02614 char object_key_delimiter = 0; 02615 02616 ACE_CString list_of_profiles (default_init_ref.in ()); 02617 02618 // Check if the protocol is corbaloc: or mcast:. 02619 // If it is, set the object_key_delimiter. 02620 if ((ACE_OS::strncmp (default_init_ref.in (), 02621 corbaloc_prefix, 02622 sizeof corbaloc_prefix -1) == 0) || 02623 (ACE_OS::strncmp (default_init_ref.in (), 02624 mcast_prefix, 02625 sizeof mcast_prefix -1) == 0)) 02626 { 02627 object_key_delimiter = '/'; 02628 } 02629 else 02630 { 02631 TAO_Connector_Registry *conn_reg = this->connector_registry (); 02632 02633 // Obtain the appropriate object key delimiter for the 02634 // specified protocol. 02635 object_key_delimiter = 02636 conn_reg->object_key_delimiter (list_of_profiles.c_str ()); 02637 } 02638 02639 // Make sure that the default initial reference doesn't end 02640 // with the object key delimiter character. 02641 if (list_of_profiles[list_of_profiles.length() - 1] != 02642 object_key_delimiter) 02643 list_of_profiles += ACE_CString (object_key_delimiter); 02644 02645 list_of_profiles += object_id; 02646 02647 return this->orb ()->string_to_object (list_of_profiles.c_str ()); 02648 } 02649 02650 return CORBA::Object::_nil (); 02651 } |
|
Resolve the RT ORB reference for this ORB.
Definition at line 529 of file ORB_Core.inl. 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.
00530 { 00531 if (CORBA::is_nil (this->rt_orb_.in ())) 00532 { 00533 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 00534 CORBA::Object::_nil ()); 00535 if (CORBA::is_nil (this->rt_orb_.in ())) 00536 { 00537 // Save a reference to the priority mapping manager. 00538 this->rt_orb_ = 00539 this->object_ref_table ().resolve_initial_reference ( 00540 TAO_OBJID_RTORB); 00541 } 00542 } 00543 00544 return CORBA::Object::_duplicate (this->rt_orb_.in ()); 00545 } |
|
Resolve the TypeCodeFactory DLL.
Definition at line 359 of file ORB_Core.inl. References CORBA::Object::_duplicate(), ACE_GUARD_RETURN, CORBA::is_nil(), resolve_typecodefactory_i(), and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
00360 { 00361 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 00362 CORBA::Object::_nil ()); 00363 if (CORBA::is_nil (this->typecode_factory_)) 00364 { 00365 this->resolve_typecodefactory_i (); 00366 } 00367 return CORBA::Object::_duplicate (this->typecode_factory_); 00368 } |
|
Obtain and cache the typecode factory object reference.
Definition at line 2342 of file ORB_Core.cpp. References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ERROR, ACE_TEXT, configuration(), TAO_Object_Loader::create_object(), LM_ERROR, ACE_Service_Gestalt::process_directive(), and typecode_factory_. Referenced by resolve_typecodefactory().
02343 { 02344 TAO_Object_Loader *loader = 02345 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02346 (this->configuration (), 02347 ACE_TEXT ("TypeCodeFactory_Loader")); 02348 02349 if (loader == 0) 02350 { 02351 this->configuration ()->process_directive 02352 (ACE_DYNAMIC_SERVICE_DIRECTIVE("TypeCodeFactory", 02353 "TAO_TypeCodeFactory", 02354 "_make_TAO_TypeCodeFactory_Loader", 02355 "")); 02356 loader = 02357 ACE_Dynamic_Service<TAO_Object_Loader>::instance 02358 (this->configuration (), 02359 ACE_TEXT ("TypeCodeFactory_Loader")); 02360 02361 if (loader == 0) 02362 { 02363 ACE_ERROR ((LM_ERROR, 02364 ACE_TEXT ("(%P|%t) Unable to instantiate ") 02365 ACE_TEXT ("a TypeCodeFactory_Loader\n"))); 02366 throw ::CORBA::ORB::InvalidName (); 02367 } 02368 } 02369 02370 this->typecode_factory_ = 02371 loader->create_object (this->orb_, 0, 0); 02372 } |
|
|
Return the RootPOA, or try to load it if not initialized already.
Definition at line 1760 of file ORB_Core.cpp. References CORBA::Object::_duplicate(), CORBA::Object::_nil(), ACE_GUARD_RETURN, ACE_TEXT_CHAR_TO_TCHAR, adapter_registry_, configuration(), TAO_Adapter_Factory::create(), ACE_Auto_Basic_Ptr< X >::get(), TAO_Adapter_Registry::insert(), CORBA::is_nil(), orb_params(), poa_adapter(), TAO_ORB_Parameters::poa_factory_name(), ACE_Service_Gestalt::process_directive(), ACE_Auto_Basic_Ptr< X >::release(), root_poa_, and TAO_SYNCH_MUTEX. Referenced by CORBA::ORB::resolve_initial_references().
01761 { 01762 // DCL .. 01763 if (CORBA::is_nil (this->root_poa_.in ())) 01764 { 01765 01766 // Making sure the initialization process in the current thread uses 01767 // the correct service repository (ours), instead of the global one. 01768 ACE_Service_Config_Guard scg (this->configuration ()); 01769 01770 TAO_Adapter_Factory *factory = 01771 ACE_Dynamic_Service<TAO_Adapter_Factory>::instance 01772 (this->configuration (), 01773 this->orb_params ()->poa_factory_name ()); 01774 01775 if (factory == 0) 01776 { 01777 this->configuration()->process_directive ( 01778 ACE_TEXT_CHAR_TO_TCHAR ( 01779 this->orb_params ()->poa_factory_directive ())); 01780 01781 factory = 01782 ACE_Dynamic_Service<TAO_Adapter_Factory>::instance 01783 (this->configuration (), 01784 this->orb_params ()->poa_factory_name ()); 01785 } 01786 01787 if (factory == 0) 01788 { 01789 return CORBA::Object::_nil (); 01790 } 01791 01792 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, 01793 monitor, 01794 this->open_lock_, 01795 0); 01796 01797 if (CORBA::is_nil (this->root_poa_.in ())) 01798 { 01799 auto_ptr<TAO_Adapter> poa_adapter (factory->create (this)); 01800 01801 poa_adapter->open (); 01802 01803 // @@ Not exception safe 01804 this->root_poa_ = poa_adapter->root (); 01805 01806 this->adapter_registry_.insert (poa_adapter.get ()); 01807 01808 poa_adapter.release (); 01809 } 01810 } 01811 01812 return CORBA::Object::_duplicate (this->root_poa_.in ()); 01813 } |
|
Run the event loop.
Definition at line 2072 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().
02073 { 02074 // ORB::run may be called from a thread, different from the one that 02075 // did the ORB_init, consequently we must establish the Service 02076 // Gestalt, this thread will consider "global" 02077 02078 ACE_Service_Config_Guard use_orbs (this->configuration()); 02079 02080 if (TAO_debug_level > 2) 02081 { 02082 ACE_DEBUG ((LM_DEBUG, 02083 ACE_TEXT ("TAO (%P|%t) - ORB_Core::run, ") 02084 ACE_TEXT ("start [%s]\n"), 02085 perform_work?ACE_TEXT("perform_work"):ACE_TEXT("run"))); 02086 } 02087 02088 // Fetch the Reactor 02089 ACE_Reactor *r = this->reactor (); 02090 02091 int result = 1; 02092 // 1 to detect that nothing went wrong 02093 02094 // Loop handling client requests until the ORB is shutdown. 02095 02096 // We could use the leader-follower lock to check for the state 02097 // if this variable or use the lock <create_event_loop_lock> in 02098 // the server strategy factory. 02099 // We don't need to do this because we use the Reactor 02100 // mechanisms to shutdown in a thread-safe way. 02101 02102 while (this->has_shutdown () == false) 02103 { 02104 // Every time we perform an interation we have to become the 02105 // leader again, because it is possible that a client has 02106 // acquired the leader role... 02107 TAO_Leader_Follower &leader_follower = 02108 this->leader_follower (); 02109 02110 TAO_LF_Strategy &lf_strategy = 02111 this->lf_strategy (); 02112 02113 TAO_LF_Event_Loop_Thread_Helper helper (leader_follower, 02114 lf_strategy, 02115 tv); 02116 result = helper.event_loop_return (); 02117 if (result != 0) 02118 { 02119 if (errno == ETIME) 02120 return 0; 02121 else 02122 return result; 02123 } 02124 02125 // Set the owning thread of the Reactor to the one which we're 02126 // currently in. This is necessary b/c it's possible that the 02127 // application is calling us from a thread other than that in which 02128 // the Reactor's CTOR (which sets the owner) was called. 02129 // 02130 // We need to do this on every iteration because the reactor may be 02131 // acquired by one of the client threads in the LF waiting 02132 // strategy 02133 r->owner (ACE_Thread::self ()); 02134 02135 if (TAO_debug_level > 2) 02136 { 02137 ACE_DEBUG ((LM_DEBUG, 02138 ACE_TEXT ("TAO (%P|%t) - ORB_Core::run, ") 02139 ACE_TEXT ( "calling handle_events()\n"))); 02140 } 02141 02142 result = r->handle_events (tv); 02143 02144 if (TAO_debug_level > 2) 02145 { 02146 ACE_DEBUG ((LM_DEBUG, 02147 ACE_TEXT ("TAO (%P|%t) - ORB_Core::run, ") 02148 ACE_TEXT ("handle_events() returns %d\n"), 02149 result)); 02150 } 02151 02152 if (result == -1) 02153 { 02154 // An error, terminate the loop 02155 break; 02156 } 02157 if (result == 0 02158 && tv != 0 02159 && *tv == ACE_Time_Value::zero) 02160 { 02161 // A timeout, terminate the loop... 02162 break; 02163 } 02164 02165 if (perform_work) 02166 { 02167 // This is running on behalf of a perform_work() call, 02168 // The loop should run only once. 02169 break; 02170 } 02171 // Otherwise just continue.. 02172 } 02173 02174 if (this->has_shutdown () == true && 02175 this->server_factory_->activate_server_connections ()) 02176 this->tm_.wait (); 02177 02178 if (TAO_debug_level > 2) 02179 { 02180 ACE_DEBUG ((LM_DEBUG, 02181 ACE_TEXT ("TAO (%P|%t) - ORB_Core::run, ") 02182 ACE_TEXT ("ends with result = %d\n"), 02183 result)); 02184 } 02185 02186 return result; 02187 } |
|
Returns pointer to the server factory.
Definition at line 1745 of file ORB_Core.cpp. References ACE_TEXT, configuration(), and server_factory_. Referenced by TAO_Concurrency_Strategy< SVC_HANDLER >::activate_svc_handler(), and init().
01746 { 01747 if (this->server_factory_ == 0) 01748 { 01749 // Look in the service repository for an instance. 01750 this->server_factory_ = 01751 ACE_Dynamic_Service<TAO_Server_Strategy_Factory>::instance 01752 (this->configuration (), 01753 ACE_TEXT ("Server_Strategy_Factory")); 01754 } 01755 01756 return this->server_factory_; 01757 } |
|
Resolve the RT Current flyweight for this ORB. Return server_id string. Definition at line 411 of file ORB_Core.inl. References server_id_.
00412 { 00413 return this->server_id_.c_str(); 00414 } |
|
Get the Server Request Interceptor adapter. Will not create a new one if not available yet. Definition at line 574 of file ORB_Core.inl. References server_request_interceptor_adapter_. Referenced by TAO_ServerRequest::rs_pi_current(), and TAO_ServerRequest::~TAO_ServerRequest().
00575 { 00576 return this->server_request_interceptor_adapter_; 00577 } |
|
Get the Server Request Interceptor adapter. If not created, this method will try to create one if needed. Definition at line 3283 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().
03284 { 03285 if (this->server_request_interceptor_adapter_ == 0) 03286 { 03287 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, 03288 ace_mon, 03289 this->lock_, 03290 0); 03291 03292 if (this->server_request_interceptor_adapter_ == 0) 03293 { 03294 TAO_ServerRequestInterceptor_Adapter_Factory *factory = 03295 ACE_Dynamic_Service<TAO_ServerRequestInterceptor_Adapter_Factory>::instance 03296 (this->configuration (), 03297 ACE_TEXT ("ServerRequestInterceptor_Adapter_Factory")); 03298 03299 if (factory) 03300 { 03301 this->server_request_interceptor_adapter_ = 03302 factory->create (); 03303 } 03304 } 03305 } 03306 03307 return this->server_request_interceptor_adapter_; 03308 } |
|
Call the service layers with the Service Context to check whether they would like to add something to the list. Definition at line 1709 of file ORB_Core.cpp. References network_priority_protocols_hooks_, TAO_Network_Priority_Protocols_Hooks::np_service_context(), protocols_hooks_, and TAO_Protocols_Hooks::rt_service_context(). Referenced by TAO::Remote_Invocation::init_target_spec().
01713 { 01714 // @NOTE: Can use Interceptors instead.. 01715 if (this->protocols_hooks_ != 0) 01716 { 01717 this->protocols_hooks_->rt_service_context (stub, service_context, restart); 01718 } 01719 01720 // call the network priority protocols hooks that has been 01721 // registered. 01722 if (network_priority_protocols_hooks_ != 0) 01723 { 01724 this->network_priority_protocols_hooks_->np_service_context (stub, 01725 service_context, restart); 01726 } 01727 } |
|
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 85 of file ORB_Core.inl. References ft_service_, TAO_Service_Callbacks::select_profile(), and TAO_Fault_Tolerance_Service::service_callback(). Referenced by is_collocation_enabled().
00087 { 00088 CORBA::Boolean retval = false; 00089 // @@ If different services have the same feature we may want to 00090 // prioritise them here. We need to decide here whose selection of 00091 // profile is more important. 00092 if (this->ft_service_.service_callback ()) 00093 { 00094 retval = 00095 this->ft_service_.service_callback ()->select_profile (mprofile, 00096 profile); 00097 } 00098 return retval; 00099 } |
|
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 1675 of file ORB_Core.cpp. References ft_service_, TAO_Fault_Tolerance_Service::service_callback(), IOP::ServiceContextList, and TAO_INVOCATION_RECV_REQUEST_MINOR_CODE. Referenced by TAO::Synch_Twoway_Invocation::wait_for_reply().
01678 { 01679 if (this->ft_service_.service_callback ()) 01680 { 01681 return this->ft_service_.service_callback ()-> 01682 raise_comm_failure (clist, profile); 01683 } 01684 01685 throw ::CORBA::COMM_FAILURE ( 01686 CORBA::SystemException::_tao_minor_code ( 01687 TAO_INVOCATION_RECV_REQUEST_MINOR_CODE, 01688 errno), 01689 CORBA::COMPLETED_MAYBE); 01690 } |
|
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 1694 of file ORB_Core.cpp. References ft_service_, TAO_Service_Callbacks::raise_transient_failure(), TAO_Fault_Tolerance_Service::service_callback(), and IOP::ServiceContextList. Referenced by TAO::Synch_Twoway_Invocation::handle_system_exception().
01697 { 01698 if (this->ft_service_.service_callback ()) 01699 { 01700 return 01701 this->ft_service_.service_callback ()->raise_transient_failure (clist, 01702 profile); 01703 } 01704 01705 return TAO::TAO_INVOKE_FAILURE; 01706 } |
|
Search the Dynamic service list for well known services that has callbacks which can be dynamically loaded. Definition at line 1664 of file ORB_Core.cpp. References ft_service_, and TAO_Fault_Tolerance_Service::init(). Referenced by init().
01665 { 01666 // We (should) know what are the services that would need 01667 // callbacks. So, what we do is go through the Service Configurator 01668 // list for looking at the services that we want to load. 01669 this->ft_service_.init (this); 01670 01671 // @@ Other service callbacks can be added here 01672 } |
|
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 178 of file ORB_Core.inl. References TAO::ORB_Table::instance(), and TAO::ORB_Table::set_default().
00179 { 00180 TAO::ORB_Table * const table = TAO::ORB_Table::instance (); 00181 table->set_default (orb_id); 00182 } |
|
Definition at line 626 of file ORB_Core.inl. References delayed_transport_queueing_strategy_.
00628 { 00629 this->delayed_transport_queueing_strategy_ = strategy; 00630 } |
|
Definition at line 618 of file ORB_Core.inl. References eager_transport_queueing_strategy_.
00620 { 00621 this->eager_transport_queueing_strategy_ = strategy; 00622 } |
|
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 2576 of file ORB_Core.cpp. References ACE_ERROR, ACE_TEXT, ACE_TEXT_CHAR_TO_TCHAR, TAO_ORB_Parameters::add_endpoints(), LM_ERROR, orb_params(), and TAO_ORB_CORE_INIT_LOCATION_CODE. Referenced by init().
02578 { 02579 if (this->orb_params ()->add_endpoints (lane, 02580 endpoints) != 0) 02581 { 02582 ACE_ERROR ((LM_ERROR, 02583 ACE_TEXT ("(%P|%t)\n") 02584 ACE_TEXT ("Invalid endpoint(s) specified:\n%s\n"), 02585 ACE_TEXT_CHAR_TO_TCHAR(endpoints.c_str ()))); 02586 throw ::CORBA::BAD_PARAM ( 02587 CORBA::SystemException::_tao_minor_code ( 02588 TAO_ORB_CORE_INIT_LOCATION_CODE, 02589 EINVAL), 02590 CORBA::COMPLETED_NO); 02591 } 02592 02593 return 0; 02594 } |
|
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 1409 of file ORB_Core.cpp. References ACE_DEBUG, TAO_TSS_Resources::gui_resource_factory_, TAO_TSS_Resources::instance(), LM_DEBUG, and TAO_debug_level.
01410 { 01411 if (TAO_TSS_Resources::instance ()->gui_resource_factory_ != 0) 01412 { 01413 if (TAO_debug_level > 2) 01414 { 01415 ACE_DEBUG ((LM_DEBUG, 01416 "TAO (%P|%t) - Deleting old gui_resource_factory.\n")); 01417 } 01418 delete TAO_TSS_Resources::instance ()->gui_resource_factory_; 01419 } 01420 01421 TAO_TSS_Resources::instance ()->gui_resource_factory_ = gui_resource_factory; 01422 } |
|
Sets the value of TAO_ORB_Core::network_priority_protocols_hooks_.
Definition at line 1654 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance().
01656 { 01657 // Is synchronization necessary? 01658 TAO_ORB_Core_Static_Resources::instance ()-> 01659 network_priority_protocols_hooks_name_ = 01660 network_priority_protocols_hooks_name; 01661 } |
|
Sets the value of TAO_ORB_Core::resource_factory_.
Definition at line 1402 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::resource_factory_name_.
01403 { 01404 TAO_ORB_Core_Static_Resources::instance ()->resource_factory_name_ = 01405 resource_factory_name; 01406 } |
|
Definition at line 601 of file ORB_Core.inl. References Sync_Scope_Hook, and sync_scope_hook_.
00602 { 00603 this->sync_scope_hook_ = hook; 00604 } |
|
Definition at line 608 of file ORB_Core.inl. References Timeout_Hook, and timeout_hook_.
00609 { 00610 // Saving the hook pointer so that we can use it later when needed. 00611 this->timeout_hook_ = hook; 00612 } |
|
Set the TSS resource at the given slot. Returns 0 on success, and -1 on failure. Definition at line 275 of file ORB_Core.inl. 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_.
00276 { 00277 TAO_ORB_Core_TSS_Resources *tss_resources = 00278 this->get_tss_resources (); 00279 00280 // The number of allocated slots is equal to the number of 00281 // registered TSS cleanup functions, *not* the size of the array in 00282 // the ORB core TSS resources. 00283 if (slot_id >= this->tss_cleanup_funcs_.size ()) 00284 { 00285 errno = EINVAL; 00286 return -1; 00287 } 00288 00289 // If the TSS array isn't large enough, then increase its size. 00290 // We're guaranteed not to exceed the number of allocated slots by 00291 // the above check. 00292 const size_t old_size = tss_resources->ts_objects_.size (); 00293 const size_t new_size = slot_id + 1; 00294 if (slot_id >= old_size 00295 && tss_resources->ts_objects_.size (new_size) != 0) 00296 return -1; 00297 00298 // Initialize intermediate array elements to zero, since they 00299 // haven't been initialized yet. This ensures that garbage is not 00300 // returned when accessing any of those elements at a later point in 00301 // time. 00302 for (size_t i = old_size; i < slot_id; ++i) 00303 tss_resources->ts_objects_[i] = 0; 00304 00305 tss_resources->ts_objects_[slot_id] = ts_object; 00306 00307 // Make sure the ORB core pointer is set in the ORB core's TSS 00308 // resources so that the TSS cleanup functions stored in the ORB 00309 // core can be invoked. 00310 tss_resources->orb_core_ = this; 00311 00312 return 0; 00313 } |
|
End the event loop.
Definition at line 2191 of file ORB_Core.cpp. References CORBA::Object::_nil(), 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().
02192 { 02193 { 02194 ACE_GUARD (TAO_SYNCH_MUTEX, monitor, this->lock_); 02195 02196 if (this->has_shutdown () == true) 02197 return; 02198 02199 // Check if we are on the right state, i.e. do not accept 02200 // shutdowns with the 'wait_for_completion' flag set in the middle 02201 // of an upcall (because those deadlock). 02202 this->adapter_registry_.check_close (wait_for_completion); 02203 02204 // Set the 'has_shutdown' flag, so any further attempt to shutdown 02205 // becomes a noop. 02206 this->has_shutdown_ = true; 02207 02208 // need to release the mutex, because some of the shutdown 02209 // operations invoke application code, that could (and in practice 02210 // does!) callback into ORB Core code. 02211 } 02212 02213 this->adapter_registry_.close (wait_for_completion); 02214 02215 // Shutdown reactor. 02216 this->thread_lane_resources_manager ().shutdown_reactor (); 02217 02218 // Cleanup transports that use the RW strategies 02219 this->thread_lane_resources_manager ().cleanup_rw_transports (); 02220 02221 // Grab the thread manager 02222 ACE_Thread_Manager *tm = this->thr_mgr (); 02223 02224 // Try to cancel all the threads in the ORB. 02225 tm->cancel_all (); 02226 02227 // If <wait_for_completion> is set, wait for all threads to exit. 02228 if (wait_for_completion != 0) 02229 tm->wait (); 02230 02231 // Explicitly destroy the valuetype adapter 02232 delete this->valuetype_adapter_; 02233 this->valuetype_adapter_ = 0; 02234 02235 // Explicitly destroy the object reference table since it 02236 // contains references to objects, which themselves may contain 02237 // reference to this ORB. 02238 this->object_ref_table_.destroy (); 02239 02240 #if (TAO_HAS_INTERCEPTORS == 1) 02241 CORBA::release (this->pi_current_); 02242 this->pi_current_ = CORBA::Object::_nil (); 02243 #endif /* TAO_HAS_INTERCEPTORS == 1 */ 02244 } |
|
Returns a pointer to the Stub factory.
Definition at line 1616 of file ORB_Core.cpp. References ACE_TEXT_CHAR_TO_TCHAR, configuration(), orb_params(), stub_factory_, and TAO_ORB_Parameters::stub_factory_name(). Referenced by create_stub().
01617 { 01618 // Check if there is a cached reference. 01619 if (this->stub_factory_ != 0) 01620 return this->stub_factory_; 01621 01622 // If not, look in the service repository for an instance. 01623 const char *stub_factory_name = 01624 this->orb_params ()->stub_factory_name (); 01625 01626 this->stub_factory_ = 01627 ACE_Dynamic_Service<TAO_Stub_Factory>::instance 01628 (this->configuration (), 01629 ACE_TEXT_CHAR_TO_TCHAR (stub_factory_name)); 01630 01631 return this->stub_factory_; 01632 } |
|
Get the ACE_Thread_Manager.
Definition at line 148 of file ORB_Core.inl. Referenced by fini(), TAO_IIOP_Connector::open(), and shutdown().
00149 { 00150 return &this->tm_; 00151 } |
|
|
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 328 of file ORB_Core.inl. Referenced by TAO_Connection_Handler::svc_i().
00329 { 00330 timeout = this->thread_per_connection_timeout_; 00331 return this->thread_per_connection_use_timeout_; 00332 } |
|
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 2751 of file ORB_Core.cpp. References lane_resources(), and TAO_Thread_Lane_Resources::transport_message_buffer_allocator().
02752 { 02753 return this->lane_resources ().transport_message_buffer_allocator (); 02754 } |
|
Return the underlying TSS cleanup function registry.
Definition at line 316 of file ORB_Core.inl. References tss_cleanup_funcs_.
00317 { 00318 return &(this->tss_cleanup_funcs_); 00319 } |
|
Gets the value of TAO_ORB_Core::typecodefactory_adapter_name_.
Definition at line 1455 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::typecodefactory_adapter_name_.
01456 { 01457 return TAO_ORB_Core_Static_Resources::instance ()->typecodefactory_adapter_name_.c_str(); 01458 } |
|
Sets the value of TAO_ORB_Core::typecodefactory_adapter_name_.
Definition at line 1449 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::typecodefactory_adapter_name_.
01450 { 01451 TAO_ORB_Core_Static_Resources::instance ()->typecodefactory_adapter_name_ = name; 01452 } |
|
Definition at line 210 of file ORB_Core.inl. References use_global_collocation_.
00211 { 00212 return this->use_global_collocation_; 00213 } |
|
Definition at line 204 of file ORB_Core.inl. References use_global_collocation_. Referenced by is_collocation_enabled().
00205 { 00206 this->use_global_collocation_ = opt; 00207 } |
|
Do we attempt to register with the Implementation Repository.
Definition at line 347 of file ORB_Core.inl. References use_implrepo_.
00348 { 00349 return use_implrepo_; 00350 } |
|
Return the valuetype adapter.
Definition at line 3313 of file ORB_Core.cpp. References ACE_GUARD_RETURN, 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().
03314 { 03315 if (this->valuetype_adapter_ == 0) 03316 { 03317 ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, 03318 ace_mon, 03319 this->lock_, 03320 0); 03321 03322 if (this->valuetype_adapter_ == 0) 03323 { 03324 try 03325 { 03326 TAO_Valuetype_Adapter_Factory * vt_ap_factory = 03327 ACE_Dynamic_Service<TAO_Valuetype_Adapter_Factory>::instance ( 03328 TAO_ORB_Core::valuetype_adapter_factory_name () 03329 ); 03330 03331 if (vt_ap_factory) 03332 { 03333 this->valuetype_adapter_ = vt_ap_factory->create (); 03334 } 03335 } 03336 catch (const ::CORBA::Exception& ex) 03337 { 03338 ex._tao_print_exception ( 03339 "Cannot initialize the valuetype_adapter \n"); 03340 } 03341 } 03342 03343 if (this->valuetype_adapter_ == 0) 03344 { 03345 throw ::CORBA::INTERNAL (); 03346 } 03347 } 03348 03349 return this->valuetype_adapter_; 03350 } |
|
Gets the value of TAO_ORB_Core::valuetype_adapter_factory_name.
Definition at line 1479 of file ORB_Core.cpp. References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::valuetype_adapter_factory_name_.
01480 { 01481 return TAO_ORB_Core_Static_Resources::instance ()->valuetype_adapter_factory_name_.c_str(); 01482 } |
|
Sets the value of TAO_ORB_Core::valuetype_adapter_factory_name.
Definition at line 1473 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().
01474 { 01475 TAO_ORB_Core_Static_Resources::instance ()->valuetype_adapter_factory_name_ = name; 01476 } |
|
|
|
Definition at line 160 of file ORB_Core.h. |
|
The list of Adapters used in this ORB.
Definition at line 1119 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 1205 of file ORB_Core.h. Referenced by load_policy_validators(). |
|
Bir Dir GIOP policy value.
Definition at line 1208 of file ORB_Core.h. Referenced by bidir_giop_policy(). |
|
Handle to the factory for Client-side strategies.
Definition at line 1071 of file ORB_Core.h. Referenced by client_factory(). |
|
The adapter for handling client request interceptors.
Definition at line 1188 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 1010 of file ORB_Core.h. Referenced by fini(), and resolve_codecfactory_i(). |
|
Code Set Manager, received from the Resource Factory.
Definition at line 1214 of file ORB_Core.h. Referenced by codeset_manager(), init(), and ~TAO_ORB_Core(). |
|
Definition at line 990 of file ORB_Core.h. Referenced by collocation_resolver(). |
|
Default collocation policy. This should never be ORB_CONTROL.
Definition at line 1095 of file ORB_Core.h. Referenced by get_collocation_strategy(), and init(). |
|
The cached IOR for the Compression DLL.
Definition at line 1013 of file ORB_Core.h. Referenced by resolve_compression_manager_i(). |
|
ORB's service configuration.
Definition at line 1217 of file ORB_Core.h. |
|
The data block reference counts are locked using this mutex.
Definition at line 1128 of file ORB_Core.h. Referenced by create_input_cdr_data_block(), and locking_strategy(). |
|
The default policies.
Definition at line 1103 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 1166 of file ORB_Core.h. |
|
This strategy will buffer messages.
Definition at line 1157 of file ORB_Core.h. Referenced by get_transport_queueing_strategy(), set_delayed_transport_queueing_strategy(), and ~TAO_ORB_Core(). |
|
The cached object reference for the DynAnyFactory.
Definition at line 1016 of file ORB_Core.h. Referenced by fini(), and resolve_dynanyfactory_i(). |
|
This strategy will buffer messages.
Definition at line 1154 of file ORB_Core.h. Referenced by get_transport_queueing_strategy(), set_eager_transport_queueing_strategy(), and ~TAO_ORB_Core(). |
|
Definition at line 1149 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 1161 of file ORB_Core.h. Referenced by get_transport_queueing_strategy(), and ~TAO_ORB_Core(). |
|
Hold the flushing strategy.
Definition at line 1211 of file ORB_Core.h. Referenced by flushing_strategy(), init(), and ~TAO_ORB_Core(). |
|
Fault Tolerant service hook.
Definition at line 1082 of file ORB_Core.h. Referenced by fault_tolerance_service(), hash_service(), is_profile_equivalent(), object_is_nil(), 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 1138 of file ORB_Core.h. Referenced by has_shutdown(), init(), and shutdown(). |
|
The cached IOR for the Implementation Repository.
Definition at line 998 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 1004 of file ORB_Core.h. Referenced by imr_endpoints_in_ior(), and init(). |
|
Return InitRefMap to find if a particular object id is present.
Definition at line 1051 of file ORB_Core.h. Referenced by init(), init_ref_map(), and list_initial_references(). |
|
IORInterceptor adapter.
Definition at line 1196 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 1019 of file ORB_Core.h. Referenced by fini(), and resolve_iormanipulation_i(). |
|
The cached object reference for the IORTable.
Definition at line 1022 of file ORB_Core.h. Referenced by fini(), and resolve_ior_table_i(). |
|
Synchronize internal state...
Definition at line 986 of file ORB_Core.h. |
|
Handle to the factory for network_priority_protocols_hooks_..
Definition at line 537 of file ORB_Core.h. Referenced by get_network_priority_protocols_hooks(), init(), and service_context_list(). |
|
Table that stores the object key instead of caching one per-profile.
Definition at line 1059 of file ORB_Core.h. Referenced by fini(), init(), 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 1056 of file ORB_Core.h. Referenced by list_initial_references(), object_ref_table(), and shutdown(). |
|
Mutual exclusion for calling open.
Definition at line 1147 of file ORB_Core.h. |
|
TRUE if we want to take advantage of collocation optimization in this ORB. Definition at line 1088 of file ORB_Core.h. Referenced by init(), and optimize_collocation_objects(). |
|
Definition at line 1040 of file ORB_Core.h. Referenced by implrepo_service(), init(), orb(), and ~TAO_ORB_Core(). |
|
Parameters used by the ORB.
Definition at line 1048 of file ORB_Core.h. Referenced by init(), and orb_params(). |
|
The ORBid for this ORB.
Definition at line 1062 of file ORB_Core.h. |
|
Registry containing all orb initializers.
Definition at line 1175 of file ORB_Core.h. Referenced by orbinitializer_registry(), orbinitializer_registry_i(), and ~TAO_ORB_Core(). |
|
The IOR parser registry.
Definition at line 1202 of file ORB_Core.h. Referenced by init(), and 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 1185 of file ORB_Core.h. Referenced by pi_current(), resolve_picurrent_i(), and shutdown(). |
|
An optimization for the POA.
Definition at line 1122 of file ORB_Core.h. Referenced by poa_adapter(). |
|
POA current. Definition at line 1116 of file ORB_Core.h. Referenced by resolve_poa_current_i(). |
|
Policy current.
Definition at line 1106 of file ORB_Core.h. Referenced by policy_current(), and ~TAO_ORB_Core(). |
|
Registry containing all registered policy factories.
Definition at line 1172 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 1100 of file ORB_Core.h. Referenced by policy_manager(), and ~TAO_ORB_Core(). |
|
Definition at line 994 of file ORB_Core.h. |
|
Handle to the factory for protocols_hooks_..
Definition at line 534 of file ORB_Core.h. Referenced by get_protocols_hooks(), init(), and service_context_list(). |
|
Number of outstanding references to this object.
Definition at line 1169 of file ORB_Core.h. |
|
The request dispatching strategy.
Definition at line 1111 of file ORB_Core.h. Referenced by request_dispatcher(), and ~TAO_ORB_Core(). |
|
Handle to the factory for resource information..
Definition at line 1065 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 1045 of file ORB_Core.h. Referenced by root_poa(). |
|
The cached object reference for the RTCORBA::Current interface.
Definition at line 1029 of file ORB_Core.h. |
|
The cached object reference for the RTCORBA::RTORB.
Definition at line 1026 of file ORB_Core.h. Referenced by resolve_rt_orb(). |
|
Handle to the factory for Server-side strategies.
Definition at line 1074 of file ORB_Core.h. Referenced by run(), and server_factory(). |
|
The server_id_ that was passed via -ORBServerId option.
Definition at line 1068 of file ORB_Core.h. Referenced by init(), and server_id(). |
|
The adapter for handling server request interceptors.
Definition at line 1191 of file ORB_Core.h. Referenced by add_interceptor(), destroy_interceptors(), serverrequestinterceptor_adapter(), and serverrequestinterceptor_adapter_i(). |
|
Definition at line 992 of file ORB_Core.h. Referenced by stub_factory(). |
|
The hook to be set for the SyncScopePolicy.
Definition at line 1220 of file ORB_Core.h. Referenced by call_sync_scope_hook(), and set_sync_scope_hook(). |
|
Definition at line 988 of file ORB_Core.h. Referenced by fini(), thread_lane_resources_manager(), and ~TAO_ORB_Core(). |
|
Definition at line 1143 of file ORB_Core.h. |
|
Definition at line 1142 of file ORB_Core.h. |
|
The hook to be set for the RelativeRoundtripTimeoutPolicy.
Definition at line 1223 of file ORB_Core.h. Referenced by call_timeout_hook(), and set_timeout_hook(). |
|
The Thread Manager.
Definition at line 1125 of file ORB_Core.h. |
|
TSS Object cleanup functions. These correspond to the TSS objects stored in TAO's TSS resources. Definition at line 1132 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 1007 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 1092 of file ORB_Core.h. Referenced by init(), and use_global_collocation(). |
|
Flag for whether the implrepo support is enabled or not.
Definition at line 1001 of file ORB_Core.h. Referenced by implrepo_service(), init(), and use_implrepo(). |
|
Definition at line 981 of file ORB_Core.h. |
|
Pointer to the valuetype adapter.
Definition at line 1199 of file ORB_Core.h. Referenced by shutdown(), and valuetype_adapter(). |