TAO_ORB_Core Class Reference

Encapsulates the state of an ORB. More...

#include <ORB_Core.h>

Collaboration diagram for TAO_ORB_Core:

Collaboration graph
[legend]
List of all members.

Collocation Strategies

enum  { ORB_CONTROL, THRU_POA, DIRECT }
TAO::Collocation_Strategy collocation_strategy (CORBA::Object_ptr object)

Public Types

typedef void(* Timeout_Hook )(TAO_ORB_Core *, TAO_Stub *, bool &, ACE_Time_Value &)
 Define the Timeout_Hook signature.

typedef void(* Sync_Scope_Hook )(TAO_ORB_Core *, TAO_Stub *, bool &, Messaging::SyncScope &)
typedef ACE_Array_Map< ACE_CString,
ACE_CString
InitRefMap

Public Member Functions

 TAO_ORB_Core (const char *id)
 Constructor.

TAO_ORB_Parametersorb_params (void)
 Accessor for the ORB parameters.

TAO_Connector_Registryconnector_registry ()
 Get the connector registry.

TAO_Parser_Registryparser_registry (void)
 Get the IOR parser registry.

TAO::PolicyFactory_Registry_Adapterpolicy_factory_registry (void)
TAO::ORBInitializer_Registry_Adapterorbinitializer_registry (void)
TAO_ProtocolFactorySetprotocol_factories (void)
 Get the protocol factories.

CORBA::ORB_ptr orb (void)
 Get pointer to the ORB.

ACE_Reactorreactor (void)
 Wrappers that forward the request to the concurrency strategy.

ACE_Thread_Managerthr_mgr (void)
 Get the ACE_Thread_Manager.

CORBA::Object_ptr root_poa ()
 Return the RootPOA, or try to load it if not initialized already.

TAO_Adapter_Registryadapter_registry (void)
 Get the adapter registry.

TAO_Adapterpoa_adapter (void)
TAO_Protocols_Hooksget_protocols_hooks (void)
 Gets the value of TAO_ORB_Core::protocols_hooks__.

int is_collocated (const TAO_MProfile &mprofile)
ACE_Allocatoroutput_cdr_dblock_allocator (void)
ACE_Allocatoroutput_cdr_buffer_allocator (void)
ACE_Allocatoroutput_cdr_msgblock_allocator (void)
ACE_Allocatorinput_cdr_dblock_allocator (void)
ACE_Allocatorinput_cdr_buffer_allocator (void)
ACE_Allocatorinput_cdr_msgblock_allocator (void)
ACE_Allocatortransport_message_buffer_allocator (void)
ACE_Data_Blockcreate_input_cdr_data_block (size_t size)
ACE_Locklocking_strategy (void)
 Return the locking strategy used for the data blocks.

TAO_Policy_Setget_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_Managerpolicy_manager (void)
 Return the Policy_Manager for this ORB.

TAO_Policy_Currentpolicy_current (void)
void call_timeout_hook (TAO_Stub *stub, bool &has_timeout, ACE_Time_Value &time_value)
 Invoke the timeout hook if present.

void connection_timeout (TAO_Stub *stub, bool &has_timeout, ACE_Time_Value &time_value)
 Invoke the timeout hook if present.

void call_sync_scope_hook (TAO_Stub *stub, bool &has_synchronization, Messaging::SyncScope &scope)
TAO::Transport_Queueing_Strategyget_transport_queueing_strategy (TAO_Stub *stub, Messaging::SyncScope &scope)
TAO_ORB_Core_TSS_Resourcesget_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_Registrytss_cleanup_funcs (void)
 Return the underlying TSS cleanup function registry.

TAO_Leader_Followerleader_follower (void)
 Get access to the leader_follower class.

TAO_LF_Strategylf_strategy (void)
 Get access to the leader follower strategy.

TAO_Thread_Lane_Resourceslane_resources (void)
 Get access to the thread lane resources.

int run (ACE_Time_Value *tv, int perform_work)
 Run the event loop.

void shutdown (CORBA::Boolean wait_for_completion)
 End the event loop.

int has_shutdown (void)
 Get the shutdown flag value.

void destroy ()
 Shutdown the ORB and free resources.

void check_shutdown ()
 Check if ORB has shutdown. If it has, throw an exception.

int thread_per_connection_timeout (ACE_Time_Value &timeout) const
TAO_Stubcreate_stub_object (TAO_MProfile &mprofile, const char *type_id, CORBA::PolicyList *policy_list)
TAO_Stubcreate_stub (const char *repository_id, const TAO_MProfile &profiles)
CORBA::Object_ptr create_object (TAO_Stub *the_stub)
CORBA::Long initialize_object (TAO_Stub *the_stub, CORBA::Object_ptr obj)
CORBA::Long reinitialize_object (TAO_Stub *stub)
const char * orbid (void) const
 Return ORBid string.

CORBA::Boolean use_implrepo (void)
 Do we attempt to register with the Implementation Repository.

CORBA::Boolean imr_endpoints_in_ior (void)
 Do we put the ImR's endpoints into persistent object references we create.

CORBA::Object_ptr resolve_typecodefactory ()
 Resolve the TypeCodeFactory DLL.

CORBA::Object_ptr resolve_picurrent ()
 Resolve the PICurrent.

CORBA::Object_ptr resolve_poa_current ()
 Resolve POA Current.

CORBA::Object_ptr resolve_codecfactory ()
 Resolve the CodecFactory DLL.

CORBA::Object_ptr resolve_dynanyfactory ()
 Resolve the Dynamic Any Factory.

CORBA::Object_ptr resolve_ior_manipulation ()
 Resolve the IOR Manipulation reference for this ORB.

CORBA::Object_ptr resolve_ior_table ()
 Resolve the IOR Table reference for this ORB.

CORBA::Object_ptr resolve_rir (const char *name)
 Resolve an initial reference via the -ORBInitRef and.

CORBA::Object_ptr resolve_rt_orb (void)
 Resolve the RT ORB reference for this ORB.

const char * server_id (void) const
CORBA::ORB_ObjectIdListlist_initial_references ()
 List all the service known by the ORB.

CORBA::ULong _incr_refcnt (void)
 Reference counting...

CORBA::ULong _decr_refcnt (void)
int register_handle (ACE_HANDLE handle)
int remove_handle (ACE_HANDLE handle)
TAO_Valuetype_Adaptervaluetype_adapter (void)
 Return the valuetype adapter.

TAO_IORInterceptor_Adapterior_interceptor_adapter (void)
CORBA::Boolean bidir_giop_policy (void)
void bidir_giop_policy (CORBA::Boolean)
TAO_Object_Ref_Tableobject_ref_table (void)
TAO::ObjectKey_Tableobject_key_table (void)
 Acceessor to the table that stores the object_keys.

TAO_Request_Dispatcherrequest_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_Strategyflushing_strategy (void)
 Return the flushing strategy.

TAO_Codeset_Managercodeset_manager (void)
 Get Code Set Manager.

InitRefMapinit_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_Strategydefault_transport_queueing_strategy (void)
CORBA::Boolean is_permanent_forward_condition (const CORBA::Object_ptr obj, const TAO_Service_Context &service_context)
ACE_Service_Gestaltconfiguration () const
 Configuration accessor method.

auto_ptr< TAO_GIOP_Fragmentation_Strategyfragmentation_strategy (TAO_Transport *transport)
 Get outgoing fragmentation strategy.

Helper methods used by the Invocation classes.
CORBA::Object_ptr poa_current (void)
void optimize_collocation_objects (CORBA::Boolean opt)
CORBA::Boolean optimize_collocation_objects (void) const
void use_global_collocation (CORBA::Boolean opt)
CORBA::Boolean use_global_collocation (void) const
CORBA::ULong get_collocation_strategy (void) const
Access to Factories
These factories are not thread-specific, and are presented here in order to have one place to get useful information. Often, the instances to which the return pointers are stored in the Service Repository.

TAO_Resource_Factoryresource_factory (void)
 Returns pointer to the resource factory.

TAO::GUIResource_Factorygui_resource_factory (void)
 Returns pointer to the factory for creating gui resources.

TAO_Client_Strategy_Factoryclient_factory (void)
 Returns pointer to the client factory.

TAO_Server_Strategy_Factoryserver_factory (void)
 Returns pointer to the server factory.

TAO_Protocols_Hooksprotocols_hooks (void)
 Returns pointer to the Protocols_Hooks.

TAO_Thread_Lane_Resources_Managerthread_lane_resources_manager (void)
 Returns a pointer to the Thread Lane Resources Manager.

TAO_Collocation_Resolvercollocation_resolver (void)
 Returns a pointer to the Collocation Resolver.

TAO_Stub_Factorystub_factory (void)
 Returns a pointer to the Stub factory.

TAO_Endpoint_Selector_Factoryendpoint_selector_factory (void)
 Returns a pointer to the endpoint selector factory.

CORBA::Environmentdefault_environment (void) const
void default_environment (CORBA::Environment *)
CORBA::Object_ptr implrepo_service (void)
void implrepo_service (const CORBA::Object_ptr ir)
ORB Core Service Hooks
These methods would represent the hooks in the ORB Core. These hooks would be used to call back on the services or other features that are dynamically loaded.

CORBA::Boolean service_profile_selection (TAO_MProfile &mprofile, TAO_Profile *&profile)
CORBA::Boolean service_profile_reselection (TAO_Stub *stub, TAO_Profile *&profile)
void reset_service_profile_flags (void)
 Reset the flags in the loaded services.

CORBA::Boolean object_is_nil (CORBA::Object_ptr object)
TAO_Service_Callbacks::Profile_Equivalence is_profile_equivalent (const TAO_Profile *this_p, const TAO_Profile *that_p)
CORBA::ULong hash_service (TAO_Profile *this_p, CORBA::ULong max)
void service_context_list (TAO_Stub *stub, TAO_Service_Context &service_context, CORBA::Boolean retstart)
TAO_Fault_Tolerance_Servicefault_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_Adapterclientrequestinterceptor_adapter (void)
TAO::ServerRequestInterceptor_Adapterserverrequestinterceptor_adapter (void)
void add_interceptor (PortableInterceptor::IORInterceptor_ptr interceptor)
 Register an IOR interceptor.


Static Public Member Functions

void set_thread_lane_resources_manager_factory (const char *thread_lane_resources_manager_factory_name)
void set_collocation_resolver (const char *collocation_resolver_name)
 Sets the value of TAO_ORB_Core::collocation_resolver_name_.

void set_stub_factory (const char *stub_factory_name)
 Sets the value of TAO_ORB_Core::stub_factory_name_.

void set_resource_factory (const char *resource_factory_name)
 Sets the value of TAO_ORB_Core::resource_factory_.

void set_gui_resource_factory (TAO::GUIResource_Factory *gui_factory)
void set_protocols_hooks (const char *protocols_hooks_name)
 Sets the value of TAO_ORB_Core::protocols_hooks_.

void set_endpoint_selector_factory (const char *endpoint_selector_factory_name)
 Sets the value of TAO_ORB_Core::endpoint_selector_factory_.

void set_poa_factory (const char *poa_factory_name, const char *poa_factory_directive)
const ACE_CStringpoa_factory_name (void)
 Access the POA factory name.

void dynamic_adapter_name (const char *name)
 Sets the value of TAO_ORB_Core::dynamic_adapter_name_.

const char * dynamic_adapter_name (void)
 Gets the value of TAO_ORB_Core::dynamic_adapter_name_.

void ifr_client_adapter_name (const char *name)
 Sets the value of TAO_ORB_Core::ifr_client_adapter_name_.

const char * ifr_client_adapter_name (void)
 Gets the value of TAO_ORB_Core::ifr_client_adapter_name_.

void typecodefactory_adapter_name (const char *name)
 Sets the value of TAO_ORB_Core::typecodefactory_adapter_name_.

const char * typecodefactory_adapter_name (void)
 Gets the value of TAO_ORB_Core::typecodefactory_adapter_name_.

void iorinterceptor_adapter_factory_name (const char *name)
 Sets the value of TAO_ORB_Core::iorinterceptor_adapter_factory_name_.

const char * iorinterceptor_adapter_factory_name (void)
 Gets the value of TAO_ORB_Core::iorinterceptor_adapter_factory_name_.

void valuetype_adapter_factory_name (const char *name)
 Sets the value of TAO_ORB_Core::valuetype_adapter_factory_name.

const char * valuetype_adapter_factory_name (void)
 Gets the value of TAO_ORB_Core::valuetype_adapter_factory_name.

void set_timeout_hook (Timeout_Hook hook)
void connection_timeout_hook (Timeout_Hook hook)
 Define the Timeout_Hook signature.

void set_sync_scope_hook (Sync_Scope_Hook hook)

Public Attributes

TAO_Protocols_Hooksprotocols_hooks_
 Handle to the factory for protocols_hooks_..


Protected Member Functions

 ~TAO_ORB_Core (void)
int init (int &argc, char **argv)
int fini (void)
ACE_Data_Blockcreate_data_block_i (size_t size, ACE_Allocator *buffer_allocator, ACE_Allocator *dblock_allocator, ACE_Lock *lock)
 Routine that creates a ACE_Data_Block given the lock and allocators.

void resolve_typecodefactory_i ()
 Obtain and cache the typecode factory object reference.

void resolve_poa_current_i ()
 Obtain and cache the poa current.

void resolve_picurrent_i ()
 Obtain and cache the picurrent factory object reference.

TAO::ClientRequestInterceptor_Adapterclientrequestinterceptor_adapter_i (void)
TAO::ServerRequestInterceptor_Adapterserverrequestinterceptor_adapter_i (void)
void resolve_codecfactory_i ()
 Obtain and cache the codec factory object reference.

void resolve_dynanyfactory_i ()
 Obtain and cache the dynamic any factory object reference.

void resolve_iormanipulation_i ()
 Obtain and cache the IORManipulation factory object reference.

void services_callbacks_init (void)
void destroy_interceptors ()
int set_endpoint_helper (const ACE_CString &lane, const ACE_CString &endpoints)
TAO::PolicyFactory_Registry_Adapterpolicy_factory_registry_i (void)
TAO::ORBInitializer_Registry_Adapterorbinitializer_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_Managerthread_lane_resources_manager_
TAO_Collocation_Resolvercollocation_resolver_
TAO_Stub_Factorystub_factory_
TAO_ProtocolFactorySetprotocol_factories_
CORBA::Object_ptr implrepo_service_
 The cached IOR for the Implementation Repository.

int use_implrepo_
 Flag for whether the implrepo support is enabled or not.

int imr_endpoints_in_ior_
 Flag for whether to put the ImR endpoints into our object refs.

CORBA::Object_ptr typecode_factory_
 The cached IOR for the TypeCodeFactory DLL.

CORBA::Object_ptr codec_factory_
 The cached IOR for the CodecFactory DLL.

CORBA::Object_ptr dynany_factory_
 The cached object reference for the DynAnyFactory.

CORBA::Object_ptr ior_manip_factory_
 The cached object reference for the IORManipulataion.

CORBA::Object_ptr ior_table_
 The cached object reference for the IORTable.

CORBA::Object_var rt_orb_
 The cached object reference for the RTCORBA::RTORB.

CORBA::Object_var rt_current_
 The cached object reference for the RTCORBA::Current interface.

CORBA::ORB_ptr orb_
CORBA::Object_var root_poa_
TAO_ORB_Parameters orb_params_
 Parameters used by the ORB.

InitRefMap init_ref_map_
 Return InitRefMap to find if a particular object id is present.

TAO_Object_Ref_Table object_ref_table_
TAO::ObjectKey_Table object_key_table_
 Table that stores the object key instead of caching one per-profile.

char * orbid_
 The ORBid for this ORB.

TAO_Resource_Factoryresource_factory_
 Handle to the factory for resource information..

ACE_CString server_id_
 The server_id_ that was passed via -ORBServerId option.

TAO_Client_Strategy_Factoryclient_factory_
 Handle to the factory for Client-side strategies.

TAO_Server_Strategy_Factoryserver_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_Managerpolicy_manager_
 The Policy_Manager for this ORB.

TAO_Policy_Setdefault_policies_
 The default policies.

TAO_Policy_Currentpolicy_current_
 Policy current.

TAO_Request_Dispatcherrequest_dispatcher_
 The request dispatching strategy.

CORBA::Object_var poa_current_
TAO_Adapter_Registry adapter_registry_
 The list of Adapters used in this ORB.

TAO_Adapterpoa_adapter_
 An optimization for the POA.

ACE_Thread_Manager tm_
 The Thread Manager.

ACE_Lock_Adapter< TAO_SYNCH_MUTEX > data_block_lock_
 The data block reference counts are locked using this mutex.

TAO_Cleanup_Func_Registry tss_cleanup_funcs_
int has_shutdown_
 Flag which denotes that the ORB has been shutdown.

TAO_SYNCH_MUTEX open_lock_
 Mutual exclusion for calling open.

int open_called_
 Flag which denotes that the open method was called.

TAO_Endpoint_Selector_Factoryendpoint_selector_factory_
TAO::Transport_Queueing_Strategyeager_transport_queueing_strategy_
 This strategy will buffer messages.

TAO::Transport_Queueing_Strategydelayed_transport_queueing_strategy_
 This strategy will buffer messages.

TAO::Transport_Queueing_Strategyflush_transport_queueing_strategy_
TAO::Transport_Queueing_Strategydefault_transport_queueing_strategy_
 This strategy will not queue by default and not flush.

CORBA::ULong refcount_
 Number of outstanding references to this object.

TAO::PolicyFactory_Registry_Adapterpolicy_factory_registry_
 Registry containing all registered policy factories.

TAO::ORBInitializer_Registry_Adapterorbinitializer_registry_
 Registry containing all orb initializers.

CORBA::Object_ptr pi_current_
 Cached pointer/reference to the PICurrent object.

TAO::ClientRequestInterceptor_Adapterclient_request_interceptor_adapter_
 The adapter for handling client request interceptors.

TAO::ServerRequestInterceptor_Adapterserver_request_interceptor_adapter_
 The adapter for handling server request interceptors.

TAO_IORInterceptor_Adapterior_interceptor_adapter_
 IORInterceptor adapter.

TAO_Valuetype_Adaptervaluetype_adapter_
 Pointer to the valuetype adapter.

TAO_Parser_Registry parser_registry_
 The IOR parser registry.

TAO_BiDir_Adapterbidir_adapter_
 BiDirectional GIOP factory.

CORBA::Boolean bidir_giop_policy_
 Bir Dir GIOP policy value.

TAO_Flushing_Strategyflushing_strategy_
 Hold the flushing strategy.

TAO_Codeset_Managercodeset_manager_
 Code Set Manager - points to service object in the service repo.

ACE_Service_Gestaltconfig_
 ORB's service configuration.

Service Level Hooks
TAO_Fault_Tolerance_Service ft_service_
 Fault Tolerant service hook.

int thread_per_connection_use_timeout_
ACE_Time_Value thread_per_connection_timeout_

Private Member Functions

void resolve_ior_table_i ()
 Obtain and cache the dynamic any factory object reference.

CORBA::Boolean is_collocation_enabled (TAO_ORB_Core *other_orb, const TAO_MProfile &mp)
 TAO_ORB_Core (const TAO_ORB_Core &)
void operator= (const TAO_ORB_Core &)
TAO::Transport_Queueing_Strategyeager_transport_queueing_strategy (void)
TAO::Transport_Queueing_Strategydelayed_transport_queueing_strategy (void)
TAO::Transport_Queueing_Strategyflush_transport_queueing_strategy (void)

Private Attributes

bool use_local_memory_pool_

Friends

class TAO_ORB_Core_Auto_Ptr
CORBA::ORB_ptr CORBA::ORB_init (int &, char *argv[], const char *, CORBA::Environment &)

Detailed Description

Encapsulates the state of an ORB.

This is the implementation class for the CORBA::ORB interface. The class also encapsulates the access to the ORB resources and its state.

Some resources can be TSS or global, those resources are always accessed through a TSS interface, but are allocated using the Resource_Factory. If the resource is really global the Resource_Factory will simply return a pointer to the global instance.

Definition at line 158 of file ORB_Core.h.


Member Typedef Documentation

typedef ACE_Array_Map<ACE_CString, ACE_CString> TAO_ORB_Core::InitRefMap
 

Definition at line 900 of file ORB_Core.h.

typedef void(* TAO_ORB_Core::Sync_Scope_Hook)(TAO_ORB_Core *, TAO_Stub *, bool &, Messaging::SyncScope &)
 

Definition at line 551 of file ORB_Core.h.

Referenced by call_sync_scope_hook(), and set_sync_scope_hook().

typedef void(* TAO_ORB_Core::Timeout_Hook)(TAO_ORB_Core *, TAO_Stub *, bool&, ACE_Time_Value&)
 

Define the Timeout_Hook signature.

Definition at line 492 of file ORB_Core.h.

Referenced by call_timeout_hook(), connection_timeout(), connection_timeout_hook(), and set_timeout_hook().


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
ORB_CONTROL  Indicate object should refer to ORB for either one of the following strategies.
THRU_POA  Collocated calls will go thru POA.
DIRECT  Collocated calls invoke operation on Servant directly.

Definition at line 224 of file ORB_Core.h.

00225   {
00226     /// Indicate object should refer to ORB for either one of the
00227     /// following strategies.
00228     ORB_CONTROL,
00229 
00230     /// Collocated calls will go thru POA.
00231     THRU_POA,
00232 
00233     /// Collocated calls invoke operation on Servant directly.
00234     DIRECT
00235   };


Constructor & Destructor Documentation

TAO_ORB_Core::TAO_ORB_Core const char *  id  ) 
 

Constructor.

Definition at line 204 of file ORB_Core.cpp.

References ACE_NEW, ACE_OS::strnlen(), TAO_DEFAULT_OBJECT_REF_TABLE_SIZE, TAO_HAS_BUFFERING_CONSTRAINT_POLICY, TAO_HAS_CORBA_MESSAGING, TAO_POLICY_ORB_SCOPE, and TAO_USE_LOCAL_MEMORY_POOL.

00205   : protocols_hooks_ (0),
00206 #if TAO_USE_LOCAL_MEMORY_POOL == 1
00207     use_local_memory_pool_ (true),
00208 #else
00209     use_local_memory_pool_ (false),
00210 #endif
00211     lock_ (),
00212     thread_lane_resources_manager_ (0),
00213     collocation_resolver_ (0),
00214     stub_factory_ (0),
00215     protocol_factories_ (0),
00216     implrepo_service_ (CORBA::Object::_nil ()),
00217     use_implrepo_ (0),
00218     imr_endpoints_in_ior_ (1),
00219     typecode_factory_ (CORBA::Object::_nil ()),
00220     codec_factory_ (CORBA::Object::_nil ()),
00221     dynany_factory_ (CORBA::Object::_nil ()),
00222     ior_manip_factory_ (CORBA::Object::_nil ()),
00223     ior_table_ (CORBA::Object::_nil ()),
00224     orb_ (CORBA::ORB::_nil ()),
00225     root_poa_ (),
00226     orb_params_ (),
00227     init_ref_map_ (TAO_DEFAULT_OBJECT_REF_TABLE_SIZE),
00228     object_ref_table_ (),
00229     object_key_table_ (),
00230     orbid_ (ACE_OS::strdup (orbid ? orbid : "")),
00231     resource_factory_ (0),
00232     client_factory_ (0),
00233     server_factory_ (0),
00234     opt_for_collocation_ (1),
00235     use_global_collocation_ (1),
00236     collocation_strategy_ (THRU_POA),
00237 
00238 #if (TAO_HAS_CORBA_MESSAGING == 1)
00239 
00240     policy_manager_ (0),
00241     default_policies_ (0),
00242     policy_current_ (0),
00243 
00244 #endif /* TAO_HAS_CORBA_MESSAGING == 1 */
00245 
00246     poa_current_ (),
00247     adapter_registry_ (this),
00248     poa_adapter_ (0),
00249     tm_ (),
00250     tss_cleanup_funcs_ (),
00251     tss_resources_ (),
00252     has_shutdown_ (1),  // Start the ORB in a  "shutdown" state.  Only
00253                         // after CORBA::ORB_init() is called will the
00254                         // ORB no longer be shutdown.  This does not
00255                         // mean that the ORB can be reinitialized.  It
00256                         // can only be initialized once.
00257     thread_per_connection_use_timeout_ (1),
00258     open_lock_ (),
00259     endpoint_selector_factory_ (0),
00260 #if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1)
00261     eager_transport_queueing_strategy_ (0),
00262     delayed_transport_queueing_strategy_ (0),
00263     flush_transport_queueing_strategy_ (0),
00264 #endif /* TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1 */
00265     default_transport_queueing_strategy_ (0),
00266     refcount_ (1),
00267     policy_factory_registry_ (0),
00268     orbinitializer_registry_ (0),
00269 #if (TAO_HAS_INTERCEPTORS == 1)
00270     pi_current_ (CORBA::Object::_nil ()),
00271     client_request_interceptor_adapter_ (0),
00272     server_request_interceptor_adapter_ (0),
00273 #endif  /* TAO_HAS_INTERCEPTORS == 1 */
00274     ior_interceptor_adapter_ (0),
00275     valuetype_adapter_ (0),
00276     parser_registry_ (),
00277     bidir_adapter_ (0),
00278     bidir_giop_policy_ (0),
00279     flushing_strategy_ (0),
00280     codeset_manager_ (0)
00281 {
00282 #if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1)
00283 
00284   ACE_NEW (this->eager_transport_queueing_strategy_,
00285            TAO::Eager_Transport_Queueing_Strategy);
00286 
00287   ACE_NEW (this->delayed_transport_queueing_strategy_,
00288            TAO::Delayed_Transport_Queueing_Strategy);
00289 
00290   ACE_NEW (this->flush_transport_queueing_strategy_,
00291            TAO::Flush_Transport_Queueing_Strategy);
00292 
00293 #endif /* TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1 */
00294 
00295 #if (TAO_HAS_CORBA_MESSAGING == 1)
00296 
00297   ACE_NEW (this->policy_manager_,
00298            TAO_Policy_Manager);
00299 
00300   ACE_NEW (this->default_policies_,
00301            TAO_Policy_Set (TAO_POLICY_ORB_SCOPE));
00302 
00303   ACE_NEW (this->policy_current_,
00304            TAO_Policy_Current);
00305 
00306 #endif /* TAO_HAS_CORBA_MESSAGING == 1 */
00307 
00308   ACE_NEW (this->default_transport_queueing_strategy_,
00309            TAO::Default_Transport_Queueing_Strategy);
00310 
00311   // Initialize the default request dispatcher.
00312   ACE_NEW (this->request_dispatcher_,
00313            TAO_Request_Dispatcher);
00314 
00315   // @TODO: Can this be dynamic container instead?
00316   if (ACE_OS::strnlen (this->orbid_, 1) == 0)
00317     {
00318       ACE_NEW (this->config_,
00319                ACE_Service_Gestalt (ACE_Service_Gestalt::MAX_SERVICES,
00320                                     false)); // (Re)use the process-global repository
00321     }
00322   else
00323     {
00324       ACE_NEW (this->config_,
00325                ACE_Service_Gestalt (ACE_Service_Gestalt::MAX_SERVICES / 4,
00326                                     true)); // Use our own service repository
00327     }
00328 }

TAO_ORB_Core::~TAO_ORB_Core void   )  [protected]
 

Destructor is protected since the ORB Core is a reference counted object.

Definition at line 330 of file ORB_Core.cpp.

References default_policies_, default_transport_queueing_strategy_, delayed_transport_queueing_strategy_, eager_transport_queueing_strategy_, flush_transport_queueing_strategy_, flushing_strategy_, ACE_OS::free(), orb_, orbinitializer_registry_, policy_current_, policy_factory_registry_, policy_manager_, request_dispatcher_, and thread_lane_resources_manager_.

00331 {
00332   delete this->thread_lane_resources_manager_;
00333 
00334   delete this->flushing_strategy_;
00335 
00336   ACE_OS::free (this->orbid_);
00337 
00338 #if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1)
00339 
00340   delete this->eager_transport_queueing_strategy_;
00341   delete this->delayed_transport_queueing_strategy_;
00342   delete this->flush_transport_queueing_strategy_;
00343 
00344 #endif /* TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1 */
00345 
00346 #if (TAO_HAS_CORBA_MESSAGING == 1)
00347 
00348   ::CORBA::release (this->policy_manager_);
00349   delete this->default_policies_;
00350   ::CORBA::release (this->policy_current_);
00351 
00352 #endif /* TAO_HAS_CORBA_MESSAGING == 1 */
00353 
00354   delete this->default_transport_queueing_strategy_;
00355 
00356   delete this->request_dispatcher_;
00357 
00358   delete this->policy_factory_registry_;
00359 
00360   // Don't delete, is a process wide singleton shared by all orbs
00361   orbinitializer_registry_ = 0;
00362 
00363   ::CORBA::release (this->orb_);
00364 
00365   delete this->config_;
00366   this->config_ = 0;
00367 }

TAO_ORB_Core::TAO_ORB_Core const TAO_ORB_Core  )  [private]
 


Member Function Documentation

ACE_INLINE CORBA::ULong TAO_ORB_Core::_decr_refcnt void   ) 
 

Definition at line 24 of file ORB_Core.i.

References ACE_GUARD_RETURN, fini(), and TAO_SYNCH_MUTEX.

Referenced by TAO_ORB_Core_Auto_Ptr::reset(), TAO::ORB_Core_Ref_Counter::~ORB_Core_Ref_Counter(), and TAO_ORB_Core_Auto_Ptr::~TAO_ORB_Core_Auto_Ptr().

00025 {
00026   {
00027     ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 0);
00028     --this->refcount_;
00029     if (this->refcount_ != 0)
00030       return this->refcount_;
00031   }
00032 
00033   this->fini ();
00034   return 0;
00035 }

ACE_INLINE CORBA::ULong TAO_ORB_Core::_incr_refcnt void   ) 
 

Reference counting...

Definition at line 17 of file ORB_Core.i.

References ACE_GUARD_RETURN, and TAO_SYNCH_MUTEX.

Referenced by TAO::ORB_Table::find(), initialize_object_i(), TAO::Collocated_Invocation::invoke(), and TAO::ORB_Core_Ref_Counter::ORB_Core_Ref_Counter().

00018 {
00019   ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, guard, this->lock_, 0);
00020   return this->refcount_++;
00021 }

TAO_ORB_Core::ACE_TSS_TYPE TAO_ORB_Core_TSS_Resources   )  [protected]
 

This is where the tss resources for this ORB are stored.

ACE_INLINE TAO_Adapter_Registry * TAO_ORB_Core::adapter_registry void   ) 
 

Get the adapter registry.

Definition at line 192 of file ORB_Core.i.

References adapter_registry_.

Referenced by create_object(), TAO_Request_Dispatcher::dispatch(), initialize_object_i(), TAO_GIOP_Message_Lite::process_locate_request(), and TAO_GIOP_Message_Lite::process_request().

00193 {
00194   return &this->adapter_registry_;
00195 }

void TAO_ORB_Core::add_interceptor PortableInterceptor::IORInterceptor_ptr  interceptor  ) 
 

Register an IOR interceptor.

Definition at line 3227 of file ORB_Core.cpp.

References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_ERROR, ACE_TEXT, ACE_THROW, TAO_IORInterceptor_Adapter::add_interceptor(), ior_interceptor_adapter(), ior_interceptor_adapter_, PortableInterceptor::IORInterceptor_ptr, and LM_ERROR.

03230 {
03231   if (this->ior_interceptor_adapter ())
03232     {
03233       this->ior_interceptor_adapter_->add_interceptor (interceptor
03234                                                        ACE_ENV_ARG_PARAMETER);
03235       ACE_CHECK;
03236     }
03237   else
03238     {
03239       ACE_ERROR ((LM_ERROR,
03240                   ACE_TEXT ("(%P|%t) %p\n"),
03241                   ACE_TEXT ("ERROR: ORB Core unable to find the ")
03242                   ACE_TEXT ("IORInterceptor Adapter Factory instance")));
03243 
03244       ACE_THROW (CORBA::INTERNAL ());
03245     }
03246 }

void TAO_ORB_Core::add_interceptor PortableInterceptor::ServerRequestInterceptor_ptr  interceptor,
const CORBA::PolicyList policies
 

Register a server request interceptor with policies.

Definition at line 3393 of file ORB_Core.cpp.

References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_ERROR, ACE_TEXT, ACE_THROW, TAO::ServerRequestInterceptor_Adapter::add_interceptor(), LM_ERROR, server_request_interceptor_adapter_, serverrequestinterceptor_adapter_i(), and PortableInterceptor::ServerRequestInterceptor_ptr.

03397 {
03398   if (this->serverrequestinterceptor_adapter_i ())
03399     {
03400       this->server_request_interceptor_adapter_->add_interceptor (
03401         interceptor,
03402         policies
03403         ACE_ENV_ARG_PARAMETER);
03404 
03405       ACE_CHECK;
03406     }
03407   else
03408     {
03409       ACE_ERROR ((LM_ERROR,
03410                   ACE_TEXT ("(%P|%t) %p\n"),
03411                   ACE_TEXT ("ERROR: ORB Core unable to find the ")
03412                   ACE_TEXT ("Server Request Interceptor Adapter Factory ")
03413                   ACE_TEXT ("instance")));
03414 
03415       ACE_THROW (CORBA::INTERNAL ());
03416     }
03417 }

void TAO_ORB_Core::add_interceptor PortableInterceptor::ClientRequestInterceptor_ptr  interceptor,
const CORBA::PolicyList policies
 

Register a client request interceptor with policies.

Definition at line 3366 of file ORB_Core.cpp.

References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_ERROR, ACE_TEXT, ACE_THROW, TAO::ClientRequestInterceptor_Adapter::add_interceptor(), client_request_interceptor_adapter_, clientrequestinterceptor_adapter_i(), PortableInterceptor::ClientRequestInterceptor_ptr, and LM_ERROR.

03370 {
03371   if (this->clientrequestinterceptor_adapter_i ())
03372     {
03373       this->client_request_interceptor_adapter_->add_interceptor (
03374         interceptor,
03375         policies
03376         ACE_ENV_ARG_PARAMETER);
03377 
03378       ACE_CHECK;
03379     }
03380   else
03381     {
03382       ACE_ERROR ((LM_ERROR,
03383                   ACE_TEXT ("(%P|%t) %p\n"),
03384                   ACE_TEXT ("ERROR: ORB Core unable to find the ")
03385                   ACE_TEXT ("Client Request Interceptor Adapter Factory ")
03386                   ACE_TEXT ("instance")));
03387 
03388       ACE_THROW (CORBA::INTERNAL ());
03389     }
03390 }

void TAO_ORB_Core::add_interceptor PortableInterceptor::ServerRequestInterceptor_ptr  interceptor  ) 
 

Register a server request interceptor.

Definition at line 3343 of file ORB_Core.cpp.

References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_ERROR, ACE_TEXT, ACE_THROW, TAO::ServerRequestInterceptor_Adapter::add_interceptor(), LM_ERROR, server_request_interceptor_adapter_, serverrequestinterceptor_adapter_i(), and PortableInterceptor::ServerRequestInterceptor_ptr.

03346 {
03347   if (this->serverrequestinterceptor_adapter_i ())
03348     {
03349       this->server_request_interceptor_adapter_->add_interceptor (interceptor
03350                                                                   ACE_ENV_ARG_PARAMETER);
03351       ACE_CHECK;
03352     }
03353   else
03354     {
03355       ACE_ERROR ((LM_ERROR,
03356                   ACE_TEXT ("(%P|%t) %p\n"),
03357                   ACE_TEXT ("ERROR: ORB Core unable to find the ")
03358                   ACE_TEXT ("Server Request Interceptor Adapter Factory ")
03359                   ACE_TEXT ("instance")));
03360 
03361       ACE_THROW (CORBA::INTERNAL ());
03362     }
03363 }

void TAO_ORB_Core::add_interceptor PortableInterceptor::ClientRequestInterceptor_ptr  interceptor  ) 
 

Register a client request interceptor.

Definition at line 3292 of file ORB_Core.cpp.

References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_ERROR, ACE_TEXT, ACE_THROW, TAO::ClientRequestInterceptor_Adapter::add_interceptor(), client_request_interceptor_adapter_, clientrequestinterceptor_adapter_i(), PortableInterceptor::ClientRequestInterceptor_ptr, and LM_ERROR.

03295 {
03296   if (this->clientrequestinterceptor_adapter_i ())
03297     {
03298       this->client_request_interceptor_adapter_->add_interceptor (interceptor
03299                                                                   ACE_ENV_ARG_PARAMETER);
03300       ACE_CHECK;
03301     }
03302   else
03303     {
03304       ACE_ERROR ((LM_ERROR,
03305                   ACE_TEXT ("(%P|%t) %p\n"),
03306                   ACE_TEXT ("ERROR: ORB Core unable to find the ")
03307                   ACE_TEXT ("Client Request Interceptor Adapter Factory ")
03308                   ACE_TEXT ("instance")));
03309 
03310       ACE_THROW (CORBA::INTERNAL ());
03311     }
03312 }

int TAO_ORB_Core::add_tss_cleanup_func ACE_CLEANUP_FUNC  cleanup,
size_t &  slot_id
 

Register a TSS cleanup function. The slot ID for the corresponding ORB core TSS resource is returned by the reference argument. This method return 0 on success, and -1 on failure.

Definition at line 2993 of file ORB_Core.cpp.

References TAO_Cleanup_Func_Registry::register_cleanup_function(), and tss_cleanup_funcs_.

02995 {
02996   return this->tss_cleanup_funcs_.register_cleanup_function (cleanup,
02997                                                              slot_id);
02998 }

ACE_INLINE void TAO_ORB_Core::bidir_giop_policy CORBA::Boolean   ) 
 

Definition at line 53 of file ORB_Core.i.

References bidir_giop_policy_.

00054 {
00055   this->bidir_giop_policy_ = val;
00056 }

ACE_INLINE CORBA::Boolean TAO_ORB_Core::bidir_giop_policy void   ) 
 

Set and Get methods to indicate whether a BiDir IIOP policy has been set in the POA.

Note:
At present, the value will be true even if one of the POA's is set with the Bi Dir GIOP policy.

Definition at line 47 of file ORB_Core.i.

References bidir_giop_policy_.

Referenced by TAO_IIOP_Transport::generate_request_header(), and TAO_GIOP_Message_Generator_Parser_12::parse_request_header().

00048 {
00049   return this->bidir_giop_policy_;
00050 }

void TAO_ORB_Core::call_sync_scope_hook TAO_Stub stub,
bool &  has_synchronization,
Messaging::SyncScope scope
 

Definition at line 2940 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), Sync_Scope_Hook, TAO_ORB_Core_Static_Resources::sync_scope_hook_, and Messaging::SyncScope.

Referenced by TAO::Invocation_Adapter::set_response_flags().

02943 {
02944   Sync_Scope_Hook sync_scope_hook =
02945     TAO_ORB_Core_Static_Resources::instance ()->sync_scope_hook_;
02946 
02947   if (sync_scope_hook == 0)
02948     {
02949       has_synchronization = false;
02950       return;
02951     }
02952 
02953   (*sync_scope_hook) (this, stub, has_synchronization, scope);
02954 }

void TAO_ORB_Core::call_timeout_hook TAO_Stub stub,
bool &  has_timeout,
ACE_Time_Value time_value
 

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

Parameters:
has_timeout returns 0 if there is no timeout policy set.
time_value returns the timeout value in effect for the object, thread and current ORB.

Definition at line 3001 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), Timeout_Hook, and TAO_ORB_Core_Static_Resources::timeout_hook_.

Referenced by TAO::LocateRequest_Invocation_Adapter::get_timeout(), and TAO::Invocation_Adapter::get_timeout().

03004 {
03005   Timeout_Hook timeout_hook =
03006     TAO_ORB_Core_Static_Resources::instance ()->timeout_hook_;
03007 
03008   if (timeout_hook == 0)
03009     {
03010       has_timeout = false;
03011       return;
03012     }
03013   (*timeout_hook) (this, stub, has_timeout, time_value);
03014 }

void TAO_ORB_Core::check_shutdown  ) 
 

Check if ORB has shutdown. If it has, throw an exception.

Definition at line 2352 of file ORB_Core.cpp.

References ACE_THROW, and has_shutdown().

Referenced by CORBA::ORB::check_shutdown().

02353 {
02354   if (this->has_shutdown ())
02355     {
02356       // As defined by the CORBA 2.3 specification, throw a
02357       // CORBA::BAD_INV_ORDER exception with minor code 4 if the ORB
02358       // has shutdown by the time an ORB function is called.
02359 
02360       ACE_THROW (CORBA::BAD_INV_ORDER (CORBA::OMGVMCID | 4,
02361                                        CORBA::COMPLETED_NO));
02362     }
02363 }

TAO_Client_Strategy_Factory * TAO_ORB_Core::client_factory void   ) 
 

Returns pointer to the client factory.

Definition at line 1783 of file ORB_Core.cpp.

References ACE_TEXT, client_factory_, and configuration().

Referenced by TAO_Connector::create_connect_strategy(), TAO::Transport_Cache_Manager::find_transport(), TAO_Fault_Tolerance_Service::init(), TAO_Muxed_TMS::TAO_Muxed_TMS(), TAO_Profile::TAO_Profile(), TAO_Transport::TAO_Transport(), TAO::Profile_Transport_Resolver::use_parallel_connect(), and TAO_Wait_On_Read::wait().

01784 {
01785   if (this->client_factory_ == 0)
01786     {
01787       // Look in the service repository for an instance.
01788       this->client_factory_ =
01789         ACE_Dynamic_Service<TAO_Client_Strategy_Factory>::instance
01790           (this->configuration (),
01791            ACE_TEXT ("Client_Strategy_Factory"));
01792     }
01793 
01794   return this->client_factory_;
01795 }

ACE_INLINE TAO::ClientRequestInterceptor_Adapter * TAO_ORB_Core::clientrequestinterceptor_adapter void   ) 
 

Get the Client Request Interceptor adapter. Will not create a new one if not available yet.

Definition at line 621 of file ORB_Core.i.

References client_request_interceptor_adapter_.

00622 {
00623   return this->client_request_interceptor_adapter_;
00624 }

TAO::ClientRequestInterceptor_Adapter * TAO_ORB_Core::clientrequestinterceptor_adapter_i void   )  [protected]
 

Get the Client Request Interceptor adapter. If not created, this method will try to create one if needed.

Definition at line 3315 of file ORB_Core.cpp.

References ACE_GUARD_RETURN, ACE_TEXT, client_request_interceptor_adapter_, configuration(), TAO_ClientRequestInterceptor_Adapter_Factory::create(), and TAO_SYNCH_MUTEX.

Referenced by add_interceptor().

03316 {
03317   if (this->client_request_interceptor_adapter_ == 0)
03318     {
03319       ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
03320                         ace_mon,
03321                         this->lock_,
03322                         0);
03323 
03324       if (this->client_request_interceptor_adapter_ == 0)
03325         {
03326           TAO_ClientRequestInterceptor_Adapter_Factory *factory =
03327             ACE_Dynamic_Service<TAO_ClientRequestInterceptor_Adapter_Factory>::instance
03328               (this->configuration (),
03329                ACE_TEXT ("ClientRequestInterceptor_Adapter_Factory"));
03330 
03331           if (factory)
03332             {
03333               this->client_request_interceptor_adapter_ =
03334                 factory->create ();
03335             }
03336         }
03337     }
03338 
03339   return this->client_request_interceptor_adapter_;
03340 }

ACE_INLINE TAO_Codeset_Manager * TAO_ORB_Core::codeset_manager void   ) 
 

Get Code Set Manager.

Definition at line 440 of file ORB_Core.i.

References TAO_Resource_Factory::codeset_manager(), TAO_ORB_Parameters::negotiate_codesets(), orb_params(), and resource_factory().

Referenced by TAO_IIOP_Acceptor::create_new_profile(), TAO_IIOP_Acceptor::create_shared_profile(), TAO_Transport::generate_request_header(), TAO_GIOP_Message_Lite::process_request(), and TAO_GIOP_Message_Base::process_request().

00441 {
00442   if (this->orb_params()->negotiate_codesets() == 0)
00443     return 0;
00444   if (this->codeset_manager_ == 0)
00445     {
00446       // This causes a factory to be loaded which will call
00447       // the codeset_manager setter in this thread.
00448       this->codeset_manager_ =
00449         this->resource_factory()->codeset_manager();
00450       if (this->codeset_manager_ == 0)
00451         this->orb_params()->negotiate_codesets(false);
00452     }
00453   return this->codeset_manager_;
00454 }

TAO_Collocation_Resolver & TAO_ORB_Core::collocation_resolver void   ) 
 

Returns a pointer to the Collocation Resolver.

Definition at line 1568 of file ORB_Core.cpp.

References ACE_CString, ACE_TEXT_CHAR_TO_TCHAR, collocation_resolver_, TAO_ORB_Core_Static_Resources::collocation_resolver_name_, configuration(), and TAO_ORB_Core_Static_Resources::instance().

Referenced by collocation_strategy().

01569 {
01570   // Check if there is a cached reference.
01571   if (this->collocation_resolver_ != 0)
01572     return *this->collocation_resolver_;
01573 
01574   // If not, lookup it up.
01575   const ACE_CString &collocation_resolver_name =
01576     TAO_ORB_Core_Static_Resources::instance ()->collocation_resolver_name_;
01577 
01578   this->collocation_resolver_ =
01579     ACE_Dynamic_Service<TAO_Collocation_Resolver>::instance
01580       (this->configuration (),
01581        ACE_TEXT_CHAR_TO_TCHAR (collocation_resolver_name.c_str()));
01582 
01583   return *this->collocation_resolver_;
01584 }

TAO::Collocation_Strategy TAO_ORB_Core::collocation_strategy CORBA::Object_ptr  object  )  [static]
 

This method returns the right collocation strategy, if any, to be used to perform a method invocation on the given object.

Note:
No-Collocation is a special case of collocation.

Definition at line 3540 of file ORB_Core.cpp.

References ACE_ASSERT, ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, collocation_resolver(), DIRECT, TAO_Pseudo_Var_T< T >::in(), TAO_Collocation_Resolver::is_collocated(), CORBA::is_nil(), CORBA::Object_ptr, and TAO_Stub::servant_orb_var().

Referenced by TAO::Invocation_Adapter::invoke_i().

03542 {
03543   TAO_Stub *stub = object->_stubobj ();
03544   if (!CORBA::is_nil (stub->servant_orb_var ().in ()) &&
03545       stub->servant_orb_var ()->orb_core () != 0)
03546     {
03547       TAO_ORB_Core *orb_core =
03548         stub->servant_orb_var ()->orb_core ();
03549 
03550       const int collocated =
03551         orb_core->collocation_resolver ().is_collocated (object
03552                                                          ACE_ENV_ARG_PARAMETER);
03553       ACE_CHECK_RETURN (TAO::TAO_CS_REMOTE_STRATEGY);
03554 
03555       if (collocated)
03556         {
03557           switch (stub->servant_orb_var ()->orb_core ()->get_collocation_strategy ())
03558             {
03559             case THRU_POA:
03560               return TAO::TAO_CS_THRU_POA_STRATEGY;
03561 
03562             case DIRECT:
03563               {
03564                 /////////////////////////////////////////////////////////////
03565                 // If the servant is null and you are collocated this means
03566                 // that the POA policy NON-RETAIN is set, and with that policy
03567                 // using the DIRECT collocation strategy is just insane.
03568                 /////////////////////////////////////////////////////////////
03569                 ACE_ASSERT (object->_servant () != 0);
03570                 return TAO::TAO_CS_DIRECT_STRATEGY;
03571               }
03572             }
03573         }
03574     }
03575 
03576   // In this case the Object is a client.
03577   return TAO::TAO_CS_REMOTE_STRATEGY;
03578 }

TAO_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE ACE_Service_Gestalt * TAO_ORB_Core::configuration  )  const
 

Configuration accessor method.

Definition at line 11 of file ORB_Core.i.

Referenced by client_factory(), clientrequestinterceptor_adapter_i(), collocation_resolver(), endpoint_selector_factory(), ior_interceptor_adapter(), load_policy_validators(), TAO_Parser_Registry::open(), orbinitializer_registry_i(), TAO_DLL_Parser::parse_string(), policy_factory_registry_i(), resolve_codecfactory_i(), resolve_dynanyfactory_i(), resolve_ior_table_i(), resolve_iormanipulation_i(), resolve_picurrent_i(), resolve_poa_current_i(), resolve_typecodefactory_i(), resource_factory(), root_poa(), server_factory(), serverrequestinterceptor_adapter_i(), stub_factory(), and thread_lane_resources_manager().

00012 {
00013   return this->config_;
00014 }

void TAO_ORB_Core::connection_timeout TAO_Stub stub,
bool &  has_timeout,
ACE_Time_Value time_value
 

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

Parameters:
has_timeout returns 0 if there is no timeout policy set.
time_value returns the timeout value in effect for the object, thread and current ORB.

Definition at line 3024 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::alt_connection_timeout_hook_, connection_timeout_hook(), TAO_ORB_Core_Static_Resources::connection_timeout_hook_, TAO_ORB_Core_Static_Resources::instance(), and Timeout_Hook.

Referenced by TAO::Profile_Transport_Resolver::get_connection_timeout().

03027 {
03028   Timeout_Hook connection_timeout_hook =
03029     TAO_ORB_Core_Static_Resources::instance ()->connection_timeout_hook_;
03030 
03031   if (connection_timeout_hook == 0)
03032     {
03033       has_timeout = false;
03034       return;
03035     }
03036 
03037   (*connection_timeout_hook) (this, stub, has_timeout, time_value);
03038 
03039   Timeout_Hook alt_connection_timeout_hook =
03040     TAO_ORB_Core_Static_Resources::instance ()->alt_connection_timeout_hook_;
03041 
03042   if (alt_connection_timeout_hook == 0)
03043     return;
03044 
03045   if (!has_timeout || time_value == ACE_Time_Value::zero )
03046     {
03047       (*alt_connection_timeout_hook) (this, stub, has_timeout,time_value);
03048       return;
03049     }
03050 
03051   // At this point, both the primary and alternate hooks are defined, and
03052   // the primary did indeed set a value
03053   ACE_Time_Value tv1;
03054   bool ht1;
03055   (*alt_connection_timeout_hook) (this, stub, ht1,tv1);
03056   if (ht1 && tv1 > ACE_Time_Value::zero && tv1 < time_value)
03057     time_value = tv1;
03058 }

void TAO_ORB_Core::connection_timeout_hook Timeout_Hook  hook  )  [static]
 

Define the Timeout_Hook signature.

The connection timeout hook was originally defined to allow the TAO Messaging code to be factored out of the core TAO library and placed in to an optional library. Since then, a new invocation endpoint selector, the optimised connection endpoint selector (see Strategies/OC_Endpoint_Selector.h) reused this connection timeout hook. However, this set up a problem when both the Messaging library and OCES are being used in the same application.

The solution was to add a new connection timeout hook attribute (see alt_connection_timeout_hook_ below). This method now checks to see if the connection timeout hook is already set, and if so assigns the supplied hook value to the alternate connection timeout hook. This functionality has a side-effect of assuming that hooks are NEVER unloaded or actively replaced. IOW, no one will call this method with a 0 or some other pointer value to replace an existing hook.

If such functionality as unloading a hook pointer is required, then this method must be extended to give some kind of identity for the hook. Additional changes to the definition of the hook will also be necessary to support such identity and manipulation.

Definition at line 3061 of file ORB_Core.cpp.

References ACE_DEBUG, ACE_TEXT, LM_DEBUG, TAO_debug_level, Timeout_Hook, and TOCSRi.

Referenced by connection_timeout().

03062 {
03063   // Saving the hook pointer so that we can use it later when needed.
03064   // For now there are only two entry points that may supply a connection
03065   // timeout hook. But there might be future entry points, so this should
03066   // probably be addressed by a more sophisticated mechanism.
03067 
03068 #define TOCSRi TAO_ORB_Core_Static_Resources::instance ()
03069 
03070   // A consern was raised that since this function is called by two
03071   // different initializers there may be a race condition that might
03072   // require a lock. We are not using a lock at this time because of
03073   // two callers, one happens only during service directive processing
03074   // and the other only during ORB Initialization time. The former
03075   // happens when the OC_Endpoint_Selector_Factory is loaded, the
03076   // latter is part of the messaging library. The messaging library
03077   // calls this function as part of pre_init processing, and this call
03078   // happes for every ORB instance. This was the case before these The
03079   // latter call occurs when the messaging library is loaded. The
03080   // redundant calls occured then as well. Second, it isn't clear how
03081   // a lock in this static method would react in the face of windows
03082   // dlls, shared memory segments, etc. Therefore we are continuing to
03083   // keep this code lockless as it always was, assuming no
03084   // simultanious overwrite will occur.
03085 
03086   if (TOCSRi->connection_timeout_hook_ == 0)
03087     {
03088       if (TAO_debug_level > 2)
03089         ACE_DEBUG ((LM_DEBUG,
03090                     ACE_TEXT("TAO (%P|%t) setting primary hook\n")));
03091       TOCSRi->connection_timeout_hook_ = hook;
03092     }
03093   else if (TOCSRi->connection_timeout_hook_ != hook &&
03094            TOCSRi->alt_connection_timeout_hook_ == 0)
03095     {
03096       if (TAO_debug_level > 2)
03097         ACE_DEBUG ((LM_DEBUG,
03098                     ACE_TEXT("TAO (%P|%t) setting alternate hook\n")));
03099       TOCSRi->alt_connection_timeout_hook_ = hook;
03100     }
03101   else
03102     if (TAO_debug_level > 2)
03103       ACE_DEBUG ((LM_DEBUG,
03104                   ACE_TEXT ("TAO (%P|%t) not overwriting alternate hook.")
03105                   ACE_TEXT (" Is it still null? %d\n"),
03106                   TOCSRi->alt_connection_timeout_hook_ == 0));
03107 
03108 #undef TOCSRi
03109 }

TAO_Connector_Registry * TAO_ORB_Core::connector_registry  ) 
 

Get the connector registry.

Definition at line 2883 of file ORB_Core.cpp.

References ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, TAO_Thread_Lane_Resources::connector_registry(), and lane_resources().

Referenced by operator>>(), resolve_rir(), CORBA::Object::tao_object_initialize(), TAO::Profile_Transport_Resolver::try_connect_i(), and CORBA::ORB::url_ior_string_to_object().

02884 {
02885   TAO_Connector_Registry *conn =
02886     this->lane_resources ().connector_registry (ACE_ENV_SINGLE_ARG_PARAMETER);
02887   ACE_CHECK_RETURN (0);
02888 
02889   return conn;
02890 }

ACE_Data_Block * TAO_ORB_Core::create_data_block_i size_t  size,
ACE_Allocator buffer_allocator,
ACE_Allocator dblock_allocator,
ACE_Lock lock
[protected]
 

Routine that creates a ACE_Data_Block given the lock and allocators.

Definition at line 2859 of file ORB_Core.cpp.

References ACE_Data_Block, ACE_NEW_MALLOC_RETURN, and ACE_Allocator::malloc().

Referenced by create_input_cdr_data_block().

02863 {
02864   ACE_Data_Block *nb = 0;
02865 
02866   ACE_NEW_MALLOC_RETURN (
02867                          nb,
02868                          static_cast<ACE_Data_Block*> (
02869                            dblock_allocator->malloc (sizeof (ACE_Data_Block))),
02870                          ACE_Data_Block (size,
02871                                          ACE_Message_Block::MB_DATA,
02872                                          0,
02873                                          buffer_allocator,
02874                                          lock_strategy,
02875                                          0,
02876                                          dblock_allocator),
02877                          0);
02878 
02879   return nb;
02880 }

ACE_Data_Block * TAO_ORB_Core::create_input_cdr_data_block size_t  size  ) 
 

The Message Blocks used for input CDRs must have appropiate locking strategies.

Definition at line 2835 of file ORB_Core.cpp.

References create_data_block_i(), data_block_lock_, input_cdr_buffer_allocator(), input_cdr_dblock_allocator(), resource_factory(), and TAO_Resource_Factory::use_locked_data_blocks().

Referenced by TAO_GIOP_Message_Lite::make_queued_data(), and TAO_GIOP_Message_Base::make_queued_data().

02836 {
02837 
02838   ACE_Allocator *dblock_allocator = 0;
02839   ACE_Allocator *buffer_allocator = 0;
02840 
02841   dblock_allocator =
02842     this->input_cdr_dblock_allocator ();
02843   buffer_allocator =
02844     this->input_cdr_buffer_allocator ();
02845 
02846   ACE_Lock* lock_strategy = 0;
02847   if (this->resource_factory ()->use_locked_data_blocks ())
02848     {
02849       lock_strategy = &this->data_block_lock_;
02850     }
02851 
02852   return this->create_data_block_i (size,
02853                                     buffer_allocator,
02854                                     dblock_allocator,
02855                                     lock_strategy);
02856 }

CORBA::Object_ptr TAO_ORB_Core::create_object TAO_Stub the_stub  ) 
 

Create a new object, use the adapter registry to create a collocated object, if not possible then create a regular object.

Definition at line 1969 of file ORB_Core.cpp.

References ACE_GUARD_RETURN, ACE_NEW_RETURN, adapter_registry(), TAO_Stub::base_profiles(), TAO::ORB_Table::begin(), TAO_Adapter_Registry::create_collocated_object(), TAO::ORB_Table::end(), TAO_ORB_Core_Auto_Ptr::get(), TAO::ORB_Table::instance(), is_collocation_enabled(), CORBA::Object_ptr, and TAO_SYNCH_MUTEX.

Referenced by operator>>(), and CORBA::ORB::url_ior_string_to_object().

01970 {
01971   // @@ What about forwarding.  With this approach we are never forwarded
01972   //    when we use collocation!
01973   const TAO_MProfile &mprofile = stub->base_profiles ();
01974 
01975   // @@ We should thow CORBA::NO_MEMORY in platforms with exceptions,
01976   // but we are stuck in platforms without exceptions!
01977   TAO_ORB_Core_Auto_Ptr collocated_orb_core;
01978   CORBA::Object_ptr x = 0;
01979 
01980   {
01981     // Lock the ORB_Table against concurrent modification while we
01982     // iterate through the ORBs.
01983     ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
01984                       guard,
01985                       TAO::ORB_Table::instance()->lock_,
01986                       CORBA::Object::_nil ());
01987 
01988     TAO::ORB_Table * const table = TAO::ORB_Table::instance ();
01989     TAO::ORB_Table::iterator const end = table->end ();
01990     for (TAO::ORB_Table::iterator i = table->begin (); i != end; ++i)
01991       {
01992         ::TAO_ORB_Core * const other_core = (*i).second.core ();
01993 
01994         if (this->is_collocation_enabled (other_core,
01995                                           mprofile))
01996           {
01997             other_core->_incr_refcnt();
01998              TAO_ORB_Core_Auto_Ptr tmp_auto_ptr (other_core);
01999              collocated_orb_core = tmp_auto_ptr;
02000             break;
02001           }
02002       }
02003   }
02004 
02005   if (collocated_orb_core.get ())
02006     {
02007       TAO_Adapter_Registry *ar =
02008         collocated_orb_core.get ()->adapter_registry ();
02009 
02010       x = ar->create_collocated_object (stub,
02011                                         mprofile);
02012     }
02013 
02014 
02015   if (!x)
02016     {
02017       // The constructor sets the proxy broker as the
02018       // Remote one.
02019       ACE_NEW_RETURN (x,
02020                       CORBA::Object (stub, 0),
02021                       0);
02022     }
02023 
02024   return x;
02025 }

TAO_Stub * TAO_ORB_Core::create_stub const char *  repository_id,
const TAO_MProfile profiles
 

Factory method that create the "right" Stub depending on wheather RTCORBA is loaded or not. The factory used to create the stub, is loaded at ORB initialization, and its type depends on the fact that RTCORBA is being used or not.

Definition at line 1892 of file ORB_Core.cpp.

References ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, TAO_Stub_Factory::create_stub(), and stub_factory().

Referenced by create_stub_object(), operator>>(), CORBA::Object::tao_object_initialize(), and CORBA::ORB::url_ior_string_to_object().

01895 {
01896   TAO_Stub *retval =
01897     this->stub_factory ()->create_stub (repository_id,
01898                                         profiles,
01899                                         this
01900                                         ACE_ENV_ARG_PARAMETER);
01901   ACE_CHECK_RETURN(0);
01902   return retval;
01903 }

TAO_Stub * TAO_ORB_Core::create_stub_object TAO_MProfile mprofile,
const char *  type_id,
CORBA::PolicyList policy_list
 

Makes sure that the ORB is open and then creates a TAO_Stub based on the endpoint.

Definition at line 1915 of file ORB_Core.cpp.

References ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, TAO_Stub::base_profiles(), create_stub(), TAO_MProfile::get_profile(), TAO_Profile::policies(), TAO_MProfile::policy_list(), and TAO_MProfile::profile_count().

01919 {
01920   // Add the Polices contained in "policy_list" to each profile so
01921   // that those policies will be exposed to the client in the IOR.  In
01922   // particular each CORBA::Policy has to be converted in to
01923   // Messaging::PolicyValue, and then all the Messaging::PolicyValue
01924   // should be embedded inside a Messaging::PolicyValueSeq which
01925   // became in turns the "body" of the IOP::TaggedComponent. This
01926   // conversion is a responsability of the CORBA::Profile class.  (See
01927   // orbos\98-05-05.pdf Section 5.4)
01928   if (policy_list->length () != 0)
01929     {
01930       TAO_Profile * profile;
01931 
01932       const CORBA::ULong count = mprofile.profile_count ();
01933       for (CORBA::ULong i = 0; i < count; ++i)
01934         {
01935           // Get the ith profile
01936           profile = mprofile.get_profile (i);
01937           profile->policies (policy_list ACE_ENV_ARG_PARAMETER);
01938           ACE_CHECK_RETURN (0);
01939         }
01940     }
01941 
01942   /// Initialize a TAO_Stub object with the mprofile thats passed.
01943   TAO_Stub *stub =
01944     this->create_stub (type_id, mprofile ACE_ENV_ARG_PARAMETER);
01945   ACE_CHECK_RETURN (stub);
01946 
01947   stub->base_profiles ().policy_list (policy_list);
01948 
01949   return stub;
01950 }

void TAO_ORB_Core::default_environment CORBA::Environment  ) 
 

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.

This means that if the user create a new environment and somebody calls a function using the default one the exception will still be received in the environment created by the user. The only drawback is that environments life time must nest properly, this shouldn't be a problem because environments are usually created on the stack, but, the spec allows their creation on the heap and/or as class members; we need to investigate the tradeoffs and take a decision.

Definition at line 3221 of file ORB_Core.cpp.

References TAO_TSS_Resources::default_environment_, and TAO_TSS_Resources::instance().

03222 {
03223   TAO_TSS_Resources::instance ()->default_environment_ = env;
03224 }

CORBA::Environment * TAO_ORB_Core::default_environment void   )  const
 

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.

This means that if the user create a new environment and somebody calls a function using the default one the exception will still be received in the environment created by the user. The only drawback is that environments life time must nest properly, this shouldn't be a problem because environments are usually created on the stack, but, the spec allows their creation on the heap and/or as class members; we need to investigate the tradeoffs and take a decision.

Definition at line 3215 of file ORB_Core.cpp.

References TAO_TSS_Resources::default_environment_, and TAO_TSS_Resources::instance().

Referenced by CORBA::Environment::default_environment(), CORBA::Environment::Environment(), and CORBA::Environment::~Environment().

03216 {
03217   return TAO_TSS_Resources::instance ()->default_environment_;
03218 }

ACE_INLINE TAO::Transport_Queueing_Strategy & TAO_ORB_Core::default_transport_queueing_strategy void   ) 
 

This strategy is the default, no explicit queueing and no explicit flush

Definition at line 544 of file ORB_Core.i.

References default_transport_queueing_strategy_.

Referenced by get_transport_queueing_strategy().

00545 {
00546   return *this->default_transport_queueing_strategy_;
00547 }

ACE_INLINE TAO::Transport_Queueing_Strategy & TAO_ORB_Core::delayed_transport_queueing_strategy void   )  [private]
 

Definition at line 530 of file ORB_Core.i.

References delayed_transport_queueing_strategy_.

Referenced by get_transport_queueing_strategy().

00531 {
00532   return *this->delayed_transport_queueing_strategy_;
00533 }

void TAO_ORB_Core::destroy  ) 
 

Shutdown the ORB and free resources.

Definition at line 2322 of file ORB_Core.cpp.

References ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_ENV_SINGLE_ARG_PARAMETER, destroy_interceptors(), TAO::ORB_Table::instance(), and shutdown().

Referenced by CORBA::ORB::destroy().

02323 {
02324   //
02325   // All destroy() should do is (a) call shutdown() and (b) unbind()
02326   // from the ORB table.  Nothing else should really be added to this
02327   // method.  Everything else should go to the shutdown() method.
02328   // Remember when the ORB Core is finally removed from the ORB table,
02329   // the reference count goes to zero and fini() is called.  fini()
02330   // calls shutdown() and does not call destroy() since destroy() will
02331   // try to unbind from the ORB table again.  Additional code should
02332   // not be added to destroy() since there is no guarantee that
02333   // orb->destroy() will ever be called by the user.  Since TAO
02334   // guarantees that shutdown() will be called, all cleanup code
02335   // should go there.
02336   //
02337 
02338   // Shutdown the ORB and block until the shutdown is complete.
02339   this->shutdown (1 ACE_ENV_ARG_PARAMETER);
02340   ACE_CHECK;
02341 
02342   // Invoke Interceptor::destroy() on all registered interceptors.
02343   this->destroy_interceptors (ACE_ENV_SINGLE_ARG_PARAMETER);
02344   ACE_CHECK;
02345 
02346   // Now remove it from the ORB table so that it's ORBid may be
02347   // reused.
02348   TAO::ORB_Table::instance ()->unbind (this->orbid_);
02349 }

void TAO_ORB_Core::destroy_interceptors  )  [protected]
 

Helper method that invokes Interceptor::destroy() on all registered interceptors when ORB::destroy() is called. Prevents exceptions from propagating up the call chain.

Definition at line 2366 of file ORB_Core.cpp.

References ACE_CATCHALL, ACE_DEBUG, ACE_ENDTRY, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD, ACE_TEXT, ACE_TRY, ACE_TRY_CHECK, client_request_interceptor_adapter_, TAO_IORInterceptor_Adapter::destroy_interceptors(), TAO::ServerRequestInterceptor_Adapter::destroy_interceptors(), TAO::ClientRequestInterceptor_Adapter::destroy_interceptors(), ior_interceptor_adapter_, LM_DEBUG, server_request_interceptor_adapter_, TAO_debug_level, and TAO_SYNCH_MUTEX.

Referenced by destroy().

02367 {
02368   ACE_TRY
02369     {
02370       ACE_GUARD (TAO_SYNCH_MUTEX, monitor, this->lock_);
02371 
02372 #if TAO_HAS_INTERCEPTORS == 1
02373       if (this->client_request_interceptor_adapter_ != 0)
02374         {
02375           this->client_request_interceptor_adapter_->destroy_interceptors (
02376             ACE_ENV_SINGLE_ARG_PARAMETER);
02377           ACE_TRY_CHECK;
02378 
02379           delete this->client_request_interceptor_adapter_;
02380           this->client_request_interceptor_adapter_ = 0;
02381         }
02382 
02383       if (this->server_request_interceptor_adapter_ != 0)
02384         {
02385           this->server_request_interceptor_adapter_->destroy_interceptors (
02386             ACE_ENV_SINGLE_ARG_PARAMETER);
02387           ACE_TRY_CHECK;
02388 
02389           delete this->server_request_interceptor_adapter_;
02390           this->server_request_interceptor_adapter_ = 0;
02391         }
02392 
02393 #endif  /* TAO_HAS_INTERCEPTORS == 1 */
02394 
02395       if (this->ior_interceptor_adapter_ != 0)
02396         {
02397           this->ior_interceptor_adapter_->destroy_interceptors (
02398               ACE_ENV_SINGLE_ARG_PARAMETER);
02399           ACE_TRY_CHECK;
02400 
02401           this->ior_interceptor_adapter_ = 0;
02402         }
02403 
02404     }
02405   ACE_CATCHALL
02406     {
02407       // .. catch all the exceptions..
02408       if (TAO_debug_level > 3)
02409         {
02410           ACE_DEBUG ((LM_DEBUG,
02411                       ACE_TEXT ("TAO (%P|%t) - Exception in TAO_ORB_Core")
02412                       ACE_TEXT ("::destroy_interceptors () \n")));
02413         }
02414     }
02415   ACE_ENDTRY;
02416 
02417   return;
02418 }

const char * TAO_ORB_Core::dynamic_adapter_name void   )  [static]
 

Gets the value of TAO_ORB_Core::dynamic_adapter_name_.

Definition at line 1464 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::dynamic_adapter_name_, and TAO_ORB_Core_Static_Resources::instance().

01465 {
01466   return TAO_ORB_Core_Static_Resources::instance ()->dynamic_adapter_name_.c_str();
01467 }

void TAO_ORB_Core::dynamic_adapter_name const char *  name  )  [static]
 

Sets the value of TAO_ORB_Core::dynamic_adapter_name_.

Definition at line 1458 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::dynamic_adapter_name_, and TAO_ORB_Core_Static_Resources::instance().

ACE_INLINE TAO::Transport_Queueing_Strategy & TAO_ORB_Core::eager_transport_queueing_strategy void   )  [private]
 

Definition at line 524 of file ORB_Core.i.

References eager_transport_queueing_strategy_.

Referenced by get_transport_queueing_strategy().

00525 {
00526   return *this->eager_transport_queueing_strategy_;
00527 }

TAO_Endpoint_Selector_Factory * TAO_ORB_Core::endpoint_selector_factory void   ) 
 

Returns a pointer to the endpoint selector factory.

Definition at line 1690 of file ORB_Core.cpp.

References ACE_CString, ACE_TEXT_CHAR_TO_TCHAR, configuration(), endpoint_selector_factory_, TAO_ORB_Core_Static_Resources::endpoint_selector_factory_name_, and TAO_ORB_Core_Static_Resources::instance().

01691 {
01692   // Check if there is a cached reference.
01693   if (this->endpoint_selector_factory_ != 0)
01694     return this->endpoint_selector_factory_;
01695 
01696   // If not, look in the service repository for an instance.
01697   const ACE_CString &endpoint_selector_factory_name =
01698     TAO_ORB_Core_Static_Resources::instance ()->endpoint_selector_factory_name_;
01699 
01700   this->endpoint_selector_factory_ =
01701     ACE_Dynamic_Service<TAO_Endpoint_Selector_Factory>::instance
01702       (this->configuration (),
01703        ACE_TEXT_CHAR_TO_TCHAR (endpoint_selector_factory_name.c_str()));
01704 
01705   return this->endpoint_selector_factory_;
01706 }

ACE_INLINE TAO_Fault_Tolerance_Service & TAO_ORB_Core::fault_tolerance_service void   ) 
 

Return a reference to the Fault Tolerant service object.

Definition at line 174 of file ORB_Core.i.

References ft_service_.

Referenced by CORBA::ORB::_tao_ft_client_id().

00175 {
00176   return this->ft_service_;
00177 }

int TAO_ORB_Core::fini void   )  [protected]
 

Final termination hook, typically called by CORBA::ORB's destructor.

Definition at line 1348 of file ORB_Core.cpp.

References ACE_ANY_EXCEPTION, ACE_CATCHANY, ACE_CString, ACE_DEBUG, ACE_ENDTRY, ACE_ENV_ARG_PARAMETER, ACE_PRINT_EXCEPTION, ACE_TEXT, ACE_TEXT_CHAR_TO_TCHAR, ACE_TRY_CHECK, ACE_TRY_NEW_ENV, TAO::ORB::close_services(), codec_factory_, TAO::ObjectKey_Table::destroy(), dynany_factory_, TAO_Thread_Lane_Resources_Manager::finalize(), implrepo_service_, ior_manip_factory_, ior_table_, LM_DEBUG, object_key_table_, orbid_, shutdown(), TAO_debug_level, thr_mgr(), thread_lane_resources_manager_, typecode_factory_, and ACE_Thread_Manager::wait().

Referenced by _decr_refcnt().

01349 {
01350   ACE_TRY_NEW_ENV
01351     {
01352       // Shutdown the ORB and block until the shutdown is complete.
01353       this->shutdown (1
01354                       ACE_ENV_ARG_PARAMETER);
01355       ACE_TRY_CHECK;
01356     }
01357   ACE_CATCHANY
01358     {
01359       ACE_CString message =
01360         "Exception caught in trying to shutdown ";
01361       message += this->orbid_;
01362       message += "\n";
01363 
01364       ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
01365                            message.c_str ());
01366     }
01367   ACE_ENDTRY;
01368 
01369   // Wait for any server threads, ignoring any failures.
01370   (void) this->thr_mgr ()->wait ();
01371 
01372   ::CORBA::release (this->implrepo_service_);
01373 
01374   ::CORBA::release (this->typecode_factory_);
01375 
01376   ::CORBA::release (this->codec_factory_);
01377 
01378   ::CORBA::release (this->dynany_factory_);
01379 
01380   ::CORBA::release (this->ior_manip_factory_);
01381 
01382   ::CORBA::release (this->ior_table_);
01383 
01384   if (TAO_debug_level > 2)
01385     {
01386       ACE_DEBUG ((LM_DEBUG,
01387                   ACE_TEXT ("Destroying ORB <%s>\n"),
01388                   ACE_TEXT_CHAR_TO_TCHAR (this->orbid_)));
01389     }
01390 
01391   // Finalize lane resources.
01392   //
01393   // @@ Do not call this->thread_lane_resources_manager().finalize().
01394   // this->thread_lane_manager_resources() can seg fault if the
01395   // factory method it invokes returns a zero pointer, which can
01396   // easily occur if the ORB is partially initialized due to a Service
01397   // Configurator initialization failure.  Instead check if the
01398   // cached pointer is non-zero and then finalize.
01399   //
01400   // @todo Fix potential seg fault in
01401   //       TAO_ORB_Core::thread_lane_resources_manager().
01402   if (this->thread_lane_resources_manager_ != 0)
01403     this->thread_lane_resources_manager_->finalize ();
01404 
01405   (void) TAO::ORB::close_services (this->configuration ());
01406 
01407   // Destroy the object_key table
01408   this->object_key_table_.destroy ();
01409 
01410   delete this;
01411 
01412   return 0;
01413 }

ACE_INLINE TAO::Transport_Queueing_Strategy & TAO_ORB_Core::flush_transport_queueing_strategy void   )  [private]
 

Definition at line 536 of file ORB_Core.i.

References flush_transport_queueing_strategy_.

Referenced by get_transport_queueing_strategy().

00537 {
00538   return *this->flush_transport_queueing_strategy_;
00539 }

ACE_INLINE TAO_Flushing_Strategy * TAO_ORB_Core::flushing_strategy void   ) 
 

Return the flushing strategy.

The flushing strategy is created by the resource factory, and it is used by the ORB to control the mechanism used to flush the outgoing data queues. The flushing strategies are stateless, therefore, there is only one per ORB.

Definition at line 71 of file ORB_Core.i.

References flushing_strategy_.

Referenced by TAO_Transport::drain_queue(), TAO_Transport::handle_timeout(), TAO_Transport::post_open(), TAO_Transport::send_asynchronous_message_i(), TAO_Transport::send_reply_message_i(), and TAO_Transport::send_synchronous_message_i().

00072 {
00073   return this->flushing_strategy_;
00074 }

auto_ptr< TAO_GIOP_Fragmentation_Strategy > TAO_ORB_Core::fragmentation_strategy TAO_Transport transport  ) 
 

Get outgoing fragmentation strategy.

Definition at line 2893 of file ORB_Core.cpp.

References TAO_Resource_Factory::create_fragmentation_strategy(), and resource_factory().

02894 {
02895   return
02896     this->resource_factory ()->create_fragmentation_strategy (
02897       transport,
02898       this->orb_params_.max_message_size ());
02899 }

CORBA::Policy_ptr TAO_ORB_Core::get_cached_policy TAO_Cached_Policy_Type  type  ) 
 

Get a cached policy. First, check the ORB-level Policy Manager, then check the ORB defaults.

Definition at line 3162 of file ORB_Core.cpp.

References TAO_Objref_Var_T< T >::_retn(), ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, TAO_Policy_Set::get_cached_policy(), TAO_Policy_Manager::get_cached_policy(), get_default_policies(), TAO_Objref_Var_T< T >::in(), CORBA::is_nil(), policy_manager(), and CORBA::Policy_var.

Referenced by get_cached_policy_including_current().

03164 {
03165   CORBA::Policy_var result;
03166 
03167   TAO_Policy_Manager *policy_manager =
03168     this->policy_manager ();
03169   if (policy_manager != 0)
03170     {
03171       result =
03172         policy_manager->get_cached_policy (type
03173                                            ACE_ENV_ARG_PARAMETER);
03174       ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03175     }
03176 
03177   if (CORBA::is_nil (result.in ()))
03178     {
03179       result =
03180         this->get_default_policies ()->get_cached_policy (type
03181                                                           ACE_ENV_ARG_PARAMETER);
03182       ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03183     }
03184 
03185   return result._retn ();
03186 }

CORBA::Policy_ptr TAO_ORB_Core::get_cached_policy_including_current TAO_Cached_Policy_Type  type  ) 
 

Get a cached policy. First, check the thread current, then check the ORB-level Policy Manager, then check the ORB defaults.

Definition at line 3189 of file ORB_Core.cpp.

References TAO_Objref_Var_T< T >::_retn(), ACE_CHECK, ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, get_cached_policy(), TAO_Policy_Current::get_cached_policy(), TAO_Objref_Var_T< T >::in(), CORBA::is_nil(), policy_current(), and CORBA::Policy_var.

03192 {
03193   TAO_Policy_Current &policy_current =
03194     this->policy_current ();
03195 
03196   CORBA::Policy_var result =
03197     policy_current.get_cached_policy (type
03198                                       ACE_ENV_ARG_PARAMETER);
03199   ACE_CHECK (CORBA::Policy::_nil ());
03200 
03201   if (CORBA::is_nil (result.in ()))
03202     {
03203       result =
03204         this->get_cached_policy (type
03205                                  ACE_ENV_ARG_PARAMETER);
03206       ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03207     }
03208 
03209   return result._retn ();
03210 }

ACE_INLINE CORBA::ULong TAO_ORB_Core::get_collocation_strategy void   )  const
 

Definition at line 248 of file ORB_Core.i.

References collocation_strategy_.

00249 {
00250   return this->collocation_strategy_;
00251 }

ACE_INLINE TAO_Policy_Set * TAO_ORB_Core::get_default_policies void   ) 
 

Accessor method for the default_policies_.

Definition at line 575 of file ORB_Core.i.

References default_policies_.

Referenced by get_cached_policy(), and get_policy().

00576 {
00577   return this->default_policies_;
00578 }

CORBA::Policy_ptr TAO_ORB_Core::get_policy CORBA::PolicyType  type  ) 
 

Get a policy. First, check the ORB-level Policy Manager, then check the ORB defaults.

Definition at line 3114 of file ORB_Core.cpp.

References TAO_Objref_Var_T< T >::_retn(), ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, get_default_policies(), TAO_Policy_Set::get_policy(), TAO_Policy_Manager::get_policy(), TAO_Objref_Var_T< T >::in(), CORBA::is_nil(), policy_manager(), CORBA::Policy_var, and CORBA::PolicyType.

Referenced by get_policy_including_current().

03116 {
03117   CORBA::Policy_var result;
03118 
03119   TAO_Policy_Manager *policy_manager =
03120     this->policy_manager ();
03121   if (policy_manager != 0)
03122     {
03123       result = policy_manager->get_policy (type
03124                                            ACE_ENV_ARG_PARAMETER);
03125       ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03126     }
03127 
03128   if (CORBA::is_nil (result.in ()))
03129     {
03130       result =
03131         this->get_default_policies ()->get_policy (type
03132                                                    ACE_ENV_ARG_PARAMETER);
03133       ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03134     }
03135 
03136   return result._retn ();
03137 }

CORBA::Policy_ptr TAO_ORB_Core::get_policy_including_current CORBA::PolicyType  type  ) 
 

Get a policy. First, check the thread current, then check the ORB-level Policy Manager, then check the ORB defaults.

Definition at line 3140 of file ORB_Core.cpp.

References TAO_Objref_Var_T< T >::_retn(), ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, get_policy(), TAO_Policy_Current::get_policy(), TAO_Objref_Var_T< T >::in(), CORBA::is_nil(), policy_current(), CORBA::Policy_var, and CORBA::PolicyType.

03142 {
03143   TAO_Policy_Current &policy_current =
03144     this->policy_current ();
03145 
03146   CORBA::Policy_var result =
03147     policy_current.get_policy (type
03148                                ACE_ENV_ARG_PARAMETER);
03149   ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03150 
03151   if (CORBA::is_nil (result.in ()))
03152     {
03153       result = this->get_policy (type
03154                                  ACE_ENV_ARG_PARAMETER);
03155       ACE_CHECK_RETURN (CORBA::Policy::_nil ());
03156     }
03157 
03158   return result._retn ();
03159 }

ACE_INLINE TAO_Protocols_Hooks * TAO_ORB_Core::get_protocols_hooks void   ) 
 

Gets the value of TAO_ORB_Core::protocols_hooks__.

Definition at line 77 of file ORB_Core.i.

References protocols_hooks_.

Referenced by TAO_IIOP_Connection_Handler::open(), TAO::Remote_Invocation::send_message(), and TAO_IIOP_Connection_Handler::set_dscp_codepoint().

00078 {
00079   return this->protocols_hooks_;
00080 }

TAO::Transport_Queueing_Strategy & TAO_ORB_Core::get_transport_queueing_strategy TAO_Stub stub,
Messaging::SyncScope scope
 

Definition at line 2959 of file ORB_Core.cpp.

References default_transport_queueing_strategy(), delayed_transport_queueing_strategy(), eager_transport_queueing_strategy(), flush_transport_queueing_strategy(), and Messaging::SyncScope.

02961 {
02962 
02963   if (scope == Messaging::SYNC_WITH_TRANSPORT
02964       || scope == Messaging::SYNC_WITH_SERVER
02965       || scope == Messaging::SYNC_WITH_TARGET)
02966     {
02967       return this->flush_transport_queueing_strategy ();
02968     }
02969 
02970   if (scope == Messaging::SYNC_NONE
02971       || scope == TAO::SYNC_EAGER_BUFFERING)
02972     {
02973       return this->eager_transport_queueing_strategy ();
02974     }
02975 
02976   if (scope == TAO::SYNC_DELAYED_BUFFERING)
02977     {
02978       return this->delayed_transport_queueing_strategy ();
02979     }
02980 
02981   return this->default_transport_queueing_strategy ();
02982 }

ACE_INLINE void * TAO_ORB_Core::get_tss_resource size_t  slot_id  ) 
 

Obtain the TSS resource in the given slot.

Definition at line 295 of file ORB_Core.i.

References get_tss_resources(), ACE_Array_Base< void * >::size(), and TAO_ORB_Core_TSS_Resources::ts_objects_.

00296 {
00297   TAO_ORB_Core_TSS_Resources *tss_resources =
00298     this->get_tss_resources ();
00299 
00300   if (slot_id >= tss_resources->ts_objects_.size ())
00301     return 0;
00302 
00303   return tss_resources->ts_objects_[slot_id];
00304 }

ACE_INLINE TAO_ORB_Core_TSS_Resources * TAO_ORB_Core::get_tss_resources void   ) 
 

Obtain the TSS resources of this orb.

Definition at line 289 of file ORB_Core.i.

References ACE_TSS_GET.

Referenced by TAO::Wait_On_LF_No_Upcall::can_process_upcalls(), get_tss_resource(), TAO_Leader_Follower::get_tss_resources(), TAO::Nested_Upcall_Guard::Nested_Upcall_Guard(), set_tss_resource(), and TAO::Nested_Upcall_Guard::~Nested_Upcall_Guard().

00290 {
00291   return ACE_TSS_GET (&this->tss_resources_,TAO_ORB_Core_TSS_Resources);
00292 }

TAO::GUIResource_Factory * TAO_ORB_Core::gui_resource_factory void   ) 
 

Returns pointer to the factory for creating gui resources.

Definition at line 1539 of file ORB_Core.cpp.

References TAO_TSS_Resources::gui_resource_factory_, and TAO_TSS_Resources::instance().

Referenced by TAO_Leader_Follower::reactor(), and TAO_Leader_Follower::~TAO_Leader_Follower().

01540 {
01541   return TAO_TSS_Resources::instance ()->gui_resource_factory_;
01542 }

ACE_INLINE int TAO_ORB_Core::has_shutdown void   ) 
 

Get the shutdown flag value.

Definition at line 354 of file ORB_Core.i.

References has_shutdown_.

Referenced by check_shutdown(), TAO_Connection_Handler::close_connection_eh(), TAO_Leader_Follower::reset_client_thread(), run(), TAO_Leader_Follower::set_client_thread(), shutdown(), and TAO_Connection_Handler::svc_i().

00355 {
00356   return this->has_shutdown_;
00357 }

ACE_INLINE CORBA::ULong TAO_ORB_Core::hash_service TAO_Profile this_p,
CORBA::ULong  max
 

For details on how this is used please see the FT service

Definition at line 162 of file ORB_Core.i.

References ft_service_, TAO_Service_Callbacks::hash_ft(), and TAO_Fault_Tolerance_Service::service_callback().

Referenced by TAO_Profile::hash_service_i().

00164 {
00165   if (this->ft_service_.service_callback ())
00166     {
00167       return this->ft_service_.service_callback ()->hash_ft (p, m);
00168     }
00169 
00170   return 0;
00171 }

const char * TAO_ORB_Core::ifr_client_adapter_name void   )  [static]
 

Gets the value of TAO_ORB_Core::ifr_client_adapter_name_.

Definition at line 1476 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::ifr_client_adapter_name_, and TAO_ORB_Core_Static_Resources::instance().

01477 {
01478   return TAO_ORB_Core_Static_Resources::instance ()->ifr_client_adapter_name_.c_str();
01479 }

void TAO_ORB_Core::ifr_client_adapter_name const char *  name  )  [static]
 

Sets the value of TAO_ORB_Core::ifr_client_adapter_name_.

Definition at line 1470 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::ifr_client_adapter_name_, and TAO_ORB_Core_Static_Resources::instance().

ACE_INLINE void TAO_ORB_Core::implrepo_service const CORBA::Object_ptr  ir  ) 
 

Definition at line 373 of file ORB_Core.i.

References implrepo_service_, and CORBA::Object_ptr.

00374 {
00375   this->implrepo_service_ = ir;
00376 }

CORBA::Object_ptr TAO_ORB_Core::implrepo_service void   ) 
 

Definition at line 2908 of file ORB_Core.cpp.

References CORBA::Object::_duplicate(), CORBA::Object::_nil(), TAO_Pseudo_Var_T< T >::_retn(), ACE_CATCHANY, ACE_ENDTRY, ACE_ENV_ARG_PARAMETER, ACE_GUARD_RETURN, ACE_TRY_CHECK, ACE_TRY_NEW_ENV, implrepo_service_, CORBA::is_nil(), CORBA::Object_var, orb_, CORBA::ORB::resolve_initial_references(), TAO_SYNCH_MUTEX, and use_implrepo_.

02909 {
02910   if (!this->use_implrepo_)
02911     return CORBA::Object::_nil ();
02912 
02913   if (CORBA::is_nil (this->implrepo_service_))
02914     {
02915 
02916       ACE_TRY_NEW_ENV
02917         {
02918           CORBA::Object_var temp =
02919             this->orb_->resolve_initial_references ("ImplRepoService" ACE_ENV_ARG_PARAMETER);
02920           ACE_TRY_CHECK;
02921 
02922           ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->lock_, CORBA::Object::_nil ());
02923 
02924           // @@ Worry about assigning a different IOR? (brunsch)
02925           this->implrepo_service_ = temp._retn ();
02926         }
02927       ACE_CATCHANY
02928         {
02929           // Just make sure that we have a null pointer.  Ignore the exception
02930           // anyway.
02931           this->implrepo_service_ = CORBA::Object::_nil ();
02932         }
02933       ACE_ENDTRY;
02934     }
02935 
02936   return CORBA::Object::_duplicate (this->implrepo_service_);
02937 }

ACE_INLINE CORBA::Boolean TAO_ORB_Core::imr_endpoints_in_ior void   ) 
 

Do we put the ImR's endpoints into persistent object references we create.

Definition at line 385 of file ORB_Core.i.

References imr_endpoints_in_ior_.

00386 {
00387   return imr_endpoints_in_ior_;
00388 }

int TAO_ORB_Core::init int &  argc,
char **  argv
[protected]
 

Initialize the guts of the ORB Core. It is intended that this be called by <CORBA::ORB_init>.

ACE_INLINE TAO_ORB_Core::InitRefMap * TAO_ORB_Core::init_ref_map void   ) 
 

Return a pointer to the -ORBInitRef map.

Definition at line 204 of file ORB_Core.i.

References init_ref_map_.

Referenced by CORBA::ORB::resolve_initial_references().

00205 {
00206   return &this->init_ref_map_;
00207 }

CORBA::Long TAO_ORB_Core::initialize_object TAO_Stub the_stub,
CORBA::Object_ptr  obj
 

Initialize a new object, use the adapter registry to initialize a collocated object, if not possible then initialize a regular object. NOTE: Why would this method be required? The answer is if the user decides to use lazy initialization of CORBA object, then this is the route that we have to take to do the initialization.

Definition at line 2028 of file ORB_Core.cpp.

References TAO_Stub::base_profiles(), initialize_object_i(), and CORBA::Object_ptr.

Referenced by CORBA::Object::tao_object_initialize().

02030 {
02031   // @@ What about forwarding.  With this approach we are never forwarded
02032   //    when we use collocation!
02033   const TAO_MProfile &mprofile =
02034     stub->base_profiles ();
02035 
02036   return initialize_object_i (stub,
02037                               mprofile);
02038 }

CORBA::Long TAO_ORB_Core::initialize_object_i TAO_Stub the_stub,
const TAO_MProfile mprofile
[protected]
 

Common code from ::initialize_object and ::reinitialize_object.

Definition at line 2049 of file ORB_Core.cpp.

References _incr_refcnt(), ACE_GUARD_RETURN, adapter_registry(), TAO::ORB_Table::begin(), TAO::ORB_Table::end(), TAO_ORB_Core_Auto_Ptr::get(), TAO_Adapter_Registry::initialize_collocated_object(), TAO::ORB_Table::instance(), is_collocation_enabled(), and TAO_SYNCH_MUTEX.

Referenced by initialize_object(), and reinitialize_object().

02052 {
02053   CORBA::Long retval = 0;
02054   TAO_ORB_Core_Auto_Ptr collocated_orb_core;
02055 
02056   {
02057     // Lock the ORB_Table against concurrent modification while we
02058     // iterate through the ORBs.
02059     ACE_MT (ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
02060                               guard,
02061                               TAO::ORB_Table::instance()->lock_,
02062                               0));
02063 
02064     TAO::ORB_Table * const table = TAO::ORB_Table::instance ();
02065     TAO::ORB_Table::iterator const end = table->end ();
02066     for (TAO::ORB_Table::iterator i = table->begin (); i != end; ++i)
02067       {
02068         TAO_ORB_Core * const other_core = (*i).second.core ();
02069 
02070         if (this->is_collocation_enabled (other_core,
02071                                           mprofile))
02072           {
02073             other_core->_incr_refcnt ();
02074             TAO_ORB_Core_Auto_Ptr tmp_auto_ptr (other_core);
02075             collocated_orb_core = tmp_auto_ptr;
02076             break;
02077           }
02078       }
02079   }
02080 
02081   if (collocated_orb_core.get ())
02082     {
02083       TAO_Adapter_Registry *ar =
02084         collocated_orb_core.get ()->adapter_registry ();
02085 
02086       retval = ar->initialize_collocated_object (stub);
02087     }
02088 
02089   return retval;
02090 }

ACE_Allocator * TAO_ORB_Core::input_cdr_buffer_allocator void   ) 
 

This allocator is always global and has no locks. It is intended for allocating the buffers used in *incoming* CDR streams.

Definition at line 2795 of file ORB_Core.cpp.

References TAO_Thread_Lane_Resources::input_cdr_buffer_allocator(), and lane_resources().

Referenced by create_input_cdr_data_block(), and CORBA::Object::tao_object_initialize().

02796 {
02797   return this->lane_resources ().input_cdr_buffer_allocator ();
02798 }

ACE_Allocator * TAO_ORB_Core::input_cdr_dblock_allocator void   ) 
 

This allocator is global, may or may not have locks. It is intended for allocating the ACE_Data_Blocks used in *incoming* CDR streams.

Definition at line 2789 of file ORB_Core.cpp.

References TAO_Thread_Lane_Resources::input_cdr_dblock_allocator(), and lane_resources().

Referenced by create_input_cdr_data_block(), TAO_Transport::handle_input_parse_data(), TAO_GIOP_Message_Base::process_request_message(), and CORBA::Object::tao_object_initialize().

02790 {
02791   return this->lane_resources ().input_cdr_dblock_allocator ();
02792 }

ACE_Allocator * TAO_ORB_Core::input_cdr_msgblock_allocator void   ) 
 

This allocator is always global and has no locks. It is intended for allocating the buffers used in *incoming* CDR streams.

Definition at line 2801 of file ORB_Core.cpp.

References TAO_Thread_Lane_Resources::input_cdr_msgblock_allocator(), and lane_resources().

Referenced by TAO_GIOP_Message_Lite::make_queued_data(), TAO_GIOP_Message_Base::make_queued_data(), TAO_GIOP_Message_Base::process_request_message(), and CORBA::Object::tao_object_initialize().

02802 {
02803   return this->lane_resources ().input_cdr_msgblock_allocator ();
02804 }

TAO_IORInterceptor_Adapter * TAO_ORB_Core::ior_interceptor_adapter void   ) 
 

Get the IOR Interceptor adapter. If not created, this method will try to create one.

Definition at line 3249 of file ORB_Core.cpp.

References ACE_ANY_EXCEPTION, ACE_CATCHANY, ACE_CHECK_RETURN, ACE_DECLARE_NEW_CORBA_ENV, ACE_ENDTRY, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, ACE_PRINT_EXCEPTION, ACE_TEXT_CHAR_TO_TCHAR, ACE_TRY, ACE_TRY_CHECK, configuration(), TAO_IORInterceptor_Adapter_Factory::create(), ior_interceptor_adapter_, iorinterceptor_adapter_factory_name(), and TAO_SYNCH_MUTEX.

Referenced by add_interceptor().

03250 {
03251   if (this->ior_interceptor_adapter_ == 0)
03252     {
03253       ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
03254                         ace_mon,
03255                         this->lock_,
03256                         0);
03257 
03258       if (this->ior_interceptor_adapter_ == 0)
03259         {
03260           ACE_DECLARE_NEW_CORBA_ENV;
03261           ACE_TRY
03262             {
03263               TAO_IORInterceptor_Adapter_Factory * ior_ap_factory =
03264                 ACE_Dynamic_Service<TAO_IORInterceptor_Adapter_Factory>::instance
03265                   (this->configuration (),
03266                    ACE_TEXT_CHAR_TO_TCHAR (TAO_ORB_Core::iorinterceptor_adapter_factory_name ()));
03267 
03268               if (ior_ap_factory)
03269                 {
03270                   this->ior_interceptor_adapter_ =
03271                     ior_ap_factory->create (ACE_ENV_SINGLE_ARG_PARAMETER);
03272                   ACE_TRY_CHECK;
03273                 }
03274             }
03275           ACE_CATCHANY
03276             {
03277               ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
03278                                    "Cannot initialize the "
03279                                    "ior_interceptor_adapter \n");
03280             }
03281           ACE_ENDTRY;
03282           ACE_CHECK_RETURN(0);
03283         }
03284     }
03285 
03286   return this->ior_interceptor_adapter_;
03287 }

const char * TAO_ORB_Core::iorinterceptor_adapter_factory_name void   )  [static]
 

Gets the value of TAO_ORB_Core::iorinterceptor_adapter_factory_name_.

Definition at line 1500 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::iorinterceptor_adapter_factory_name_.

void TAO_ORB_Core::iorinterceptor_adapter_factory_name const char *  name  )  [static]
 

Sets the value of TAO_ORB_Core::iorinterceptor_adapter_factory_name_.

Definition at line 1494 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::iorinterceptor_adapter_factory_name_.

Referenced by ior_interceptor_adapter().

int TAO_ORB_Core::is_collocated const TAO_MProfile mprofile  ) 
 

See if we have a collocated address, if yes, return the POA associated with the address.

Definition at line 2109 of file ORB_Core.cpp.

References TAO_Thread_Lane_Resources_Manager::is_collocated(), and thread_lane_resources_manager().

Referenced by is_collocation_enabled().

02110 {
02111   // @@ Lots of issues arise when dealing with collocation.  What about
02112   //    forwarding or what if this is a multi-profile IOR where the order is
02113   //    significant and only one of the profiles is collocated.  For example
02114   //    when using a multiple servers for fault tolerance.  For now, we just
02115   //    look through all profiles and if any are colocated then we assume
02116   //    the object is collocated.
02117   // @@ Note, if collocated we can not be forwarded!
02118   //    Also, acceptor_registry_->is_collocated (...) will check the
02119   //    address (ORB Host) but not the object_key.  This should be checked
02120   //    also.
02121 
02122   return this->thread_lane_resources_manager ().is_collocated (mprofile);
02123 }

CORBA::Boolean TAO_ORB_Core::is_collocation_enabled TAO_ORB_Core other_orb,
const TAO_MProfile mp
[private]
 

Checks to see whether collocation optimizations have to be applied on objects in the other_orb

Definition at line 2093 of file ORB_Core.cpp.

References is_collocated(), optimize_collocation_objects(), and use_global_collocation().

Referenced by create_object(), and initialize_object_i().

02095 {
02096   if (!orb_core->optimize_collocation_objects ())
02097     return 0;
02098 
02099   if (!orb_core->use_global_collocation () && orb_core != this)
02100     return 0;
02101 
02102   if (!orb_core->is_collocated (mp))
02103     return 0;
02104 
02105   return 1;
02106 }

ACE_INLINE CORBA::Boolean TAO_ORB_Core::is_permanent_forward_condition const CORBA::Object_ptr  obj,
const TAO_Service_Context service_context
 

Verify condition for permanent forward is given, both parameters must provide group attributes.

Definition at line 638 of file ORB_Core.i.

References TAO_Service_Callbacks::is_permanent_forward_condition(), and CORBA::Object_ptr.

Referenced by TAO::Synch_Twoway_Invocation::check_reply_status(), TAO_ServerRequest::init_reply(), and TAO_GIOP_Message_Base::process_request().

00640 {
00641   const TAO_Service_Callbacks *service_callback =
00642       this->fault_tolerance_service ().service_callback ();
00643 
00644   const CORBA::Boolean permanent_forward_condition =
00645       service_callback &&
00646       service_callback->is_permanent_forward_condition (obj,
00647                                                         service_context);
00648 
00649   return permanent_forward_condition;
00650 }

ACE_INLINE TAO_Service_Callbacks::Profile_Equivalence TAO_ORB_Core::is_profile_equivalent const TAO_Profile this_p,
const TAO_Profile that_p
 

For details on how this is used please see the FT service

Definition at line 145 of file ORB_Core.i.

References ft_service_, TAO_Service_Callbacks::is_profile_equivalent(), and TAO_Fault_Tolerance_Service::service_callback().

Referenced by TAO_Profile::is_equivalent_hook().

00147 {
00148   TAO_Service_Callbacks::Profile_Equivalence retval
00149     = TAO_Service_Callbacks::DONT_KNOW;
00150 
00151   if (this->ft_service_.service_callback ())
00152     {
00153       retval =
00154         this->ft_service_.service_callback ()->is_profile_equivalent (this_p,
00155                                                                       that_p);
00156     }
00157 
00158   return retval;
00159 }

TAO_Thread_Lane_Resources & TAO_ORB_Core::lane_resources void   ) 
 

Get access to the thread lane resources.

Definition at line 2421 of file ORB_Core.cpp.

References TAO_Thread_Lane_Resources_Manager::lane_resources(), and thread_lane_resources_manager().

Referenced by TAO_IIOP_Connection_Handler::add_transport_to_cache(), TAO_Connector::connect(), connector_registry(), TAO_Tagged_Profile::extract_object_key(), TAO::Profile_Transport_Resolver::find_transport(), input_cdr_buffer_allocator(), input_cdr_dblock_allocator(), input_cdr_msgblock_allocator(), leader_follower(), TAO_Creation_Strategy< SVC_HANDLER >::make_svc_handler(), output_cdr_buffer_allocator(), output_cdr_dblock_allocator(), output_cdr_msgblock_allocator(), TAO_Connector::parallel_connect(), TAO_IIOP_Transport::set_bidir_context_info(), TAO_Transport::transport_cache_manager(), and transport_message_buffer_allocator().

02422 {
02423   return this->thread_lane_resources_manager ().lane_resources ();
02424 }

TAO_Leader_Follower & TAO_ORB_Core::leader_follower void   ) 
 

Get access to the leader_follower class.

Definition at line 2128 of file ORB_Core.cpp.

References lane_resources(), and TAO_Thread_Lane_Resources::leader_follower().

Referenced by TAO_Leader_Follower_Flushing_Strategy::flush_message(), reactor(), run(), TAO_Wait_On_Leader_Follower::wait(), and TAO_LF_Connect_Strategy::wait_i().

02129 {
02130   return this->lane_resources ().leader_follower ();
02131 }

TAO_LF_Strategy & TAO_ORB_Core::lf_strategy void   ) 
 

Get access to the leader follower strategy.

Definition at line 2134 of file ORB_Core.cpp.

References TAO_Thread_Lane_Resources_Manager::lf_strategy(), and thread_lane_resources_manager().

Referenced by TAO_GIOP_Message_Lite::process_request_message(), TAO_GIOP_Message_Base::process_request_message(), and run().

02135 {
02136   return this->thread_lane_resources_manager ().lf_strategy ();
02137 }

CORBA::ORB::ObjectIdList * TAO_ORB_Core::list_initial_references  ) 
 

List all the service known by the ORB.

Definition at line 2730 of file ORB_Core.cpp.

References TAO_Seq_Var_Base_T< T >::_retn(), ACE_CHECK_RETURN, ACE_NEW_THROW_EX, ACE_Array_Map< Key, Value, EqualTo >::begin(), TAO_Object_Ref_Table::begin(), TAO_Object_Ref_Table::current_size(), ACE_Array_Map< Key, Value, EqualTo >::end(), TAO_Object_Ref_Table::end(), init_ref_map_, object_ref_table_, CORBA::ORB::ObjectIdList, CORBA::ORB::ObjectIdList_var, ACE_Array_Map< Key, Value, EqualTo >::size(), CORBA::string_dup(), and TAO_LIST_OF_INITIAL_SERVICES.

Referenced by CORBA::ORB::list_initial_services().

02731 {
02732   // Unsupported initial services should NOT be included in the below list!
02733   static const char *initial_services[] = { TAO_LIST_OF_INITIAL_SERVICES };
02734   // Make sure the "terminating" zero is the last array element so
02735   // that there is a stop condition when iterating through the list.
02736 
02737   static const size_t initial_services_size =
02738     sizeof (initial_services) / sizeof (initial_services[0]);
02739 
02740   const size_t total_size =
02741     initial_services_size
02742     + this->init_ref_map_.size ()
02743     + this->object_ref_table_.current_size ();
02744 
02745   CORBA::ORB::ObjectIdList *tmp = 0;
02746 
02747   ACE_NEW_THROW_EX (tmp,
02748                     CORBA::ORB::ObjectIdList (
02749                       static_cast<CORBA::ULong> (total_size)),
02750                     CORBA::NO_MEMORY ());
02751   ACE_CHECK_RETURN (0);
02752 
02753   CORBA::ORB::ObjectIdList_var list (tmp);
02754   list->length (static_cast<CORBA::ULong> (total_size));
02755 
02756   CORBA::ULong index = 0;
02757   // Index for ObjectIdList members.
02758 
02759   // Iterate over the registered initial references.
02760   for (index = 0; index < initial_services_size; ++index)
02761     list[index] = initial_services[index];
02762 
02763   // Now iterate over the initial references created by the user and
02764   // add them to the sequence.
02765 
02766   // References registered via
02767   // ORBInitInfo::register_initial_reference().
02768   TAO_Object_Ref_Table::iterator const obj_ref_end =
02769     this->object_ref_table_.end ();
02770 
02771   for (TAO_Object_Ref_Table::iterator i = this->object_ref_table_.begin ();
02772        i != obj_ref_end;
02773        ++i, ++index)
02774     list[index] = CORBA::string_dup ((*i).first.in ());
02775 
02776   // References registered via INS.
02777   InitRefMap::iterator const end = this->init_ref_map_.end ();
02778 
02779   for (InitRefMap::iterator j = this-> init_ref_map_.begin ();
02780        j != end;
02781        ++j, ++index)
02782     list[index] = (*j).second.c_str ();
02783 
02784   return list._retn ();
02785 }

void TAO_ORB_Core::load_policy_validators TAO_Policy_Validator validator  ) 
 

Call the libraries to handover the validators if they havent registered yet with the list of validators.

Definition at line 1953 of file ORB_Core.cpp.

References ACE_ENV_ARG_PARAMETER, ACE_TEXT, bidir_adapter_, configuration(), and TAO_BiDir_Adapter::load_policy_validators().

01955 {
01956   if (this->bidir_adapter_ == 0)
01957     {
01958       this->bidir_adapter_ =
01959         ACE_Dynamic_Service<TAO_BiDir_Adapter>::instance
01960           (this->configuration (), ACE_TEXT ("BiDirGIOP_Loader"));
01961     }
01962 
01963   // Call the BiDir library if it has been loaded
01964   if (this->bidir_adapter_)
01965     this->bidir_adapter_->load_policy_validators (validator ACE_ENV_ARG_PARAMETER);
01966 }

ACE_INLINE ACE_Lock * TAO_ORB_Core::locking_strategy void   ) 
 

Return the locking strategy used for the data blocks.

Definition at line 38 of file ORB_Core.i.

References data_block_lock_, resource_factory(), and TAO_Resource_Factory::use_locked_data_blocks().

Referenced by TAO_Transport::handle_input_parse_data().

00039 {
00040   if (this->resource_factory ()->use_locked_data_blocks ())
00041     return &this->data_block_lock_;
00042 
00043   return 0;
00044 }

ACE_INLINE void TAO_ORB_Core::not_default const char *  orb_id  ) 
 

Choose to be not a default ORB when there is more than one ORB.

Definition at line 217 of file ORB_Core.i.

References TAO::ORB_Table::instance(), and TAO::ORB_Table::not_default().

00218 {
00219   TAO::ORB_Table * const table = TAO::ORB_Table::instance ();
00220   table->not_default (orb_id);
00221 }

ACE_INLINE CORBA::Boolean TAO_ORB_Core::object_is_nil CORBA::Object_ptr  object  ) 
 

The loaded service would determine if the CORBA::Object_ptr is actually nil or not. This would be useful to accomodate new enhanced definitions as defined by the service specification.

Definition at line 132 of file ORB_Core.i.

References ft_service_, TAO_Service_Callbacks::object_is_nil(), CORBA::Object_ptr, and TAO_Fault_Tolerance_Service::service_callback().

Referenced by CORBA::Object::is_nil_i().

00133 {
00134   CORBA::Boolean retval = 0;
00135   if (this->ft_service_.service_callback ())
00136     {
00137       retval =
00138         this->ft_service_.service_callback ()->object_is_nil (obj);
00139     }
00140   return retval;
00141 }

ACE_INLINE TAO::ObjectKey_Table & TAO_ORB_Core::object_key_table void   ) 
 

Acceessor to the table that stores the object_keys.

Definition at line 65 of file ORB_Core.i.

References object_key_table_.

Referenced by TAO_Profile::decode(), TAO_IIOP_Profile::parse_string_i(), TAO_Profile::TAO_Profile(), and TAO_Profile::~TAO_Profile().

00066 {
00067   return this->object_key_table_;
00068 }

ACE_INLINE TAO_Object_Ref_Table & TAO_ORB_Core::object_ref_table void   ) 
 

Return the table that maps object key/name to de-stringified object reference. It is needed for supporting local objects in the resolve_initial_references() mechanism.

Definition at line 59 of file ORB_Core.i.

References object_ref_table_.

Referenced by CORBA::ORB::register_initial_reference(), CORBA::ORB::resolve_initial_references(), and resolve_rt_orb().

00060 {
00061   return this->object_ref_table_;
00062 }

void TAO_ORB_Core::operator= const TAO_ORB_Core  )  [private]
 

ACE_INLINE CORBA::Boolean TAO_ORB_Core::optimize_collocation_objects void   )  const
 

Definition at line 230 of file ORB_Core.i.

References opt_for_collocation_.

00231 {
00232   return this->opt_for_collocation_;
00233 }

ACE_INLINE void TAO_ORB_Core::optimize_collocation_objects CORBA::Boolean  opt  ) 
 

Definition at line 224 of file ORB_Core.i.

References opt_for_collocation_.

Referenced by is_collocation_enabled().

00225 {
00226   this->opt_for_collocation_ = opt;
00227 }

ACE_INLINE CORBA::ORB_ptr TAO_ORB_Core::orb void   ) 
 

Get pointer to the ORB.

Definition at line 186 of file ORB_Core.i.

References orb_.

Referenced by TAO_Profile::get_policies(), TAO_ServerRequest::orb(), resolve_rir(), and TAO_Profile::verify_orb_configuration().

00187 {
00188   return this->orb_;
00189 }

ACE_INLINE TAO_ORB_Parameters * TAO_ORB_Core::orb_params void   ) 
 

Accessor for the ORB parameters.

Definition at line 254 of file ORB_Core.i.

References orb_params_.

Referenced by TAO_IIOP_Connection_Handler::close_connection(), codeset_manager(), TAO_IIOP_Acceptor::create_new_profile(), TAO_IIOP_Acceptor::create_profile(), TAO_IIOP_Acceptor::create_shared_profile(), TAO_Profile::create_tagged_profile(), TAO_IIOP_Profile::decode_profile(), TAO_Profile::encode(), TAO_Transport::handle_input_parse_data(), TAO_IIOP_Acceptor::hostname(), TAO_IIOP_Connector::make_parallel_connection(), TAO_MCAST_Parser::multicast_query(), TAO_IIOP_Endpoint::next_filtered(), CORBA::ORB::object_to_string(), TAO_IIOP_Connection_Handler::open(), TAO_IIOP_Acceptor::open(), TAO_Acceptor_Registry::open_default(), TAO_Default_Thread_Lane_Resources_Manager::open_default_resources(), TAO_IIOP_Acceptor::open_i(), TAO_IIOP_Acceptor::probe_interfaces(), TAO_GIOP_Message_Lite::process_request_message(), TAO_GIOP_Message_Base::process_request_message(), resolve_rir(), CORBA::ORB::resolve_service(), TAO_ServerRequest::send_cached_reply(), TAO_GIOP_Message_Lite::send_reply_exception(), set_endpoint_helper(), TAO_ServerRequest::tao_send_reply_exception(), TAO::Profile_Transport_Resolver::use_parallel_connect(), and TAO_Profile::verify_orb_configuration().

00255 {
00256   return &(this->orb_params_);
00257 }

ACE_INLINE const char * TAO_ORB_Core::orbid void   )  const
 

Return ORBid string.

Definition at line 367 of file ORB_Core.i.

References orbid_.

00368 {
00369   return this->orbid_;
00370 }

ACE_INLINE TAO::ORBInitializer_Registry_Adapter * TAO_ORB_Core::orbinitializer_registry void   ) 
 

Return pointer to the orb initializer registry associated with this ORB core. Tries to load the PI library if it is not loaded yet

Definition at line 457 of file ORB_Core.i.

References ACE_GUARD_RETURN, orbinitializer_registry_, orbinitializer_registry_i(), and TAO_SYNCH_MUTEX.

Referenced by CORBA::ORB_init().

00458 {
00459   ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00460                     0);
00461   if (orbinitializer_registry_ == 0)
00462     {
00463       return this->orbinitializer_registry_i ();
00464     }
00465   return this->orbinitializer_registry_;
00466 }

TAO::ORBInitializer_Registry_Adapter * TAO_ORB_Core::orbinitializer_registry_i void   )  [protected]
 

Return pointer to the orb initializer registry associated with this ORB core.

Definition at line 1618 of file ORB_Core.cpp.

References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_TEXT, configuration(), orbinitializer_registry_, and ACE_Service_Gestalt::process_directive().

Referenced by orbinitializer_registry().

01619 {
01620   // If not, lookup it up.
01621   this->orbinitializer_registry_ =
01622     ACE_Dynamic_Service<TAO::ORBInitializer_Registry_Adapter>::instance
01623       (this->configuration (),
01624        ACE_TEXT ("ORBInitializer_Registry"));
01625 
01626 #if !defined (TAO_AS_STATIC_LIBS)
01627       // In case we build shared, try to load the PI Client library, in a
01628       // static build we just can't do this, so don't try it, lower layers
01629       // output an error then.
01630   if (orbinitializer_registry_ == 0)
01631     {
01632       this->configuration ()->process_directive (
01633         ACE_DYNAMIC_SERVICE_DIRECTIVE("ORBInitializer_Registry",
01634                                       "TAO_PI",
01635                                       "_make_ORBInitializer_Registry",
01636                                       ""));
01637       orbinitializer_registry_ =
01638         ACE_Dynamic_Service<TAO::ORBInitializer_Registry_Adapter>::instance
01639           (this->configuration (),
01640            ACE_TEXT ("ORBInitializer_Registry"));
01641     }
01642 #endif /* !TAO_AS_STATIC_LIBS */
01643 
01644   return this->orbinitializer_registry_;
01645 }

ACE_Allocator * TAO_ORB_Core::output_cdr_buffer_allocator void   ) 
 

This allocator is always TSS and has no locks. It is intended for allocating the buffers used in *outgoing* CDR streams.

Definition at line 2814 of file ORB_Core.cpp.

References lane_resources(), and TAO_Thread_Lane_Resources::output_cdr_buffer_allocator().

Referenced by TAO_GIOP_Message_Lite::send_reply_exception().

02815 {
02816   return this->lane_resources ().output_cdr_buffer_allocator ();
02817 }

ACE_Allocator * TAO_ORB_Core::output_cdr_dblock_allocator void   ) 
 

This allocator is always TSS and has no locks. It is intended for allocating the ACE_Data_Blocks used in *outgoing* CDR streams.

Definition at line 2807 of file ORB_Core.cpp.

References lane_resources(), and TAO_Thread_Lane_Resources::output_cdr_dblock_allocator().

Referenced by TAO_Profile::create_tagged_profile(), TAO_Profile::encode(), CORBA::ORB::object_to_string(), TAO_GIOP_Message_Lite::process_request_message(), TAO_ServerRequest::send_cached_reply(), TAO_GIOP_Message_Lite::send_reply_exception(), and TAO_ServerRequest::tao_send_reply_exception().

02808 {
02809 
02810   return this->lane_resources ().output_cdr_dblock_allocator ();
02811 }

ACE_Allocator * TAO_ORB_Core::output_cdr_msgblock_allocator void   ) 
 

This allocator is always TSS and has no locks. It is intended for allocating the ACE_Data_Blocks used in *outgoing* CDR streams.

Definition at line 2821 of file ORB_Core.cpp.

References lane_resources(), and TAO_Thread_Lane_Resources::output_cdr_msgblock_allocator().

Referenced by TAO_Profile::create_tagged_profile(), TAO_Profile::encode(), CORBA::ORB::object_to_string(), TAO_GIOP_Message_Lite::process_request_message(), TAO_ServerRequest::send_cached_reply(), TAO_GIOP_Message_Lite::send_reply_exception(), and TAO_ServerRequest::tao_send_reply_exception().

02822 {
02823   return this->lane_resources ().output_cdr_msgblock_allocator ();
02824 }

ACE_INLINE TAO_Parser_Registry * TAO_ORB_Core::parser_registry void   ) 
 

Get the IOR parser registry.

Definition at line 271 of file ORB_Core.i.

References parser_registry_.

Referenced by CORBA::ORB::string_to_object().

00272 {
00273   return &this->parser_registry_;
00274 }

ACE_INLINE void TAO_ORB_Core::pi_current CORBA::Object_ptr  current  ) 
 

Set the pointer to the cached TAO::PICurrent object.

Definition at line 613 of file ORB_Core.i.

References CORBA::Object_ptr, and pi_current_.

00614 {
00615   // Not duplicated since the ORB Core's "object_ref_table" already
00616   // contains a duplicate of the PICurrent object.
00617   this->pi_current_ = current;
00618 }

ACE_INLINE CORBA::Object_ptr TAO_ORB_Core::pi_current void   ) 
 

Return a pointer to the cached TAO::PICurrent object.

Definition at line 603 of file ORB_Core.i.

References pi_current_.

00604 {
00605   // A pointer/reference to PICurrent is cached in the ORB Core since
00606   // it is accessed in the critical path (i.e. the request invocation
00607   // path).  Caching it prevents additional overhead to due object
00608   // resolution from occurring.
00609   return this->pi_current_;
00610 }

TAO_Adapter * TAO_ORB_Core::poa_adapter void   ) 
 

Get the adapter named "RootPOA" and cache the result, this is an optimization for the POA.

Definition at line 1877 of file ORB_Core.cpp.

References ACE_GUARD_RETURN, adapter_registry_, TAO_Adapter_Registry::find_adapter(), poa_adapter_, and TAO_SYNCH_MUTEX.

Referenced by root_poa().

01878 {
01879   if (this->poa_adapter_ == 0)
01880     {
01881       ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->lock_, 0);
01882       if (this->poa_adapter_ == 0)
01883         {
01884           this->poa_adapter_ =
01885             this->adapter_registry_.find_adapter ("RootPOA");
01886         }
01887     }
01888   return this->poa_adapter_;
01889 }

CORBA::Object_ptr TAO_ORB_Core::poa_current void   ) 
 

Todo:
In the future this hook should change, instead of hardcoding the object we should add a "Resolver" to the ORB, so the "POACurrent" object returns a per-ORB object.
Similarly, each ORB should implement the TSS pattern to put the POA_Current_Impl in a void* slot. The current approach *does* decouple the POA from the ORB, but it cannot add new adapters or other components transparently.

const ACE_CString & TAO_ORB_Core::poa_factory_name void   )  [static]
 

Access the POA factory name.

Definition at line 1677 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::poa_factory_name_.

ACE_INLINE TAO_Policy_Current & TAO_ORB_Core::policy_current void   ) 
 

Accesors to the policy current, this object should be kept in TSS storage. The POA has to reset the policy current object on every upcall.

Definition at line 552 of file ORB_Core.i.

References policy_current_.

Referenced by get_cached_policy_including_current(), get_policy_including_current(), and CORBA::ORB::resolve_policy_current().

00553 {
00554   return *this->policy_current_;
00555 }

ACE_INLINE TAO::PolicyFactory_Registry_Adapter * TAO_ORB_Core::policy_factory_registry void   ) 
 

Return pointer to the policy factory registry associated with this ORB core.

Definition at line 469 of file ORB_Core.i.

References ACE_GUARD_RETURN, policy_factory_registry_, policy_factory_registry_i(), and TAO_SYNCH_MUTEX.

Referenced by CORBA::ORB::_create_policy(), and CORBA::ORB::create_policy().

00470 {
00471   ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00472                     0);
00473   if (policy_factory_registry_ == 0)
00474     {
00475       return this->policy_factory_registry_i ();
00476     }
00477   return this->policy_factory_registry_;
00478 }

TAO::PolicyFactory_Registry_Adapter * TAO_ORB_Core::policy_factory_registry_i void   )  [protected]
 

Return pointer to the policy factory registry associated with this ORB core.

Definition at line 1587 of file ORB_Core.cpp.

References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_TEXT, configuration(), TAO_PolicyFactory_Registry_Factory::create(), policy_factory_registry_, and ACE_Service_Gestalt::process_directive().

Referenced by policy_factory_registry().

01588 {
01589 
01590   TAO_PolicyFactory_Registry_Factory *loader =
01591     ACE_Dynamic_Service<TAO_PolicyFactory_Registry_Factory>::instance
01592       (this->configuration (),
01593        ACE_TEXT ("PolicyFactory_Loader"));
01594 
01595   if (loader == 0)
01596     {
01597       this->configuration ()->process_directive (
01598         ACE_DYNAMIC_SERVICE_DIRECTIVE("PolicyFactory_Loader",
01599                                       "TAO_PI",
01600                                       "_make_TAO_PolicyFactory_Loader",
01601                                       ""));
01602       loader =
01603         ACE_Dynamic_Service<TAO_PolicyFactory_Registry_Factory>::instance
01604           (this->configuration (),
01605            ACE_TEXT ("PolicyFactory_Loader"));
01606     }
01607 
01608   if (loader != 0)
01609     {
01610       this->policy_factory_registry_ =
01611         loader->create ();
01612     }
01613 
01614   return this->policy_factory_registry_;
01615 }

ACE_INLINE TAO_Policy_Manager * TAO_ORB_Core::policy_manager void   ) 
 

Return the Policy_Manager for this ORB.

Definition at line 281 of file ORB_Core.i.

References policy_manager_.

Referenced by get_cached_policy(), get_policy(), and CORBA::ORB::resolve_policy_manager().

00282 {
00283   return this->policy_manager_;
00284 }

ACE_INLINE TAO_ProtocolFactorySet * TAO_ORB_Core::protocol_factories void   ) 
 

Get the protocol factories.

Definition at line 265 of file ORB_Core.i.

References protocol_factories(), and TAO_OC_RETRIEVE.

Referenced by TAO_Connector_Registry::open(), TAO_Acceptor_Registry::open(), TAO_Acceptor_Registry::open_default(), and protocol_factories().

00266 {
00267   return TAO_OC_RETRIEVE (protocol_factories);
00268 }

TAO_Protocols_Hooks* TAO_ORB_Core::protocols_hooks void   ) 
 

Returns pointer to the Protocols_Hooks.

ACE_Reactor * TAO_ORB_Core::reactor void   ) 
 

Wrappers that forward the request to the concurrency strategy.

Definition at line 2902 of file ORB_Core.cpp.

References leader_follower(), and TAO_Leader_Follower::reactor().

Referenced by TAO_Connection_Handler::close_connection_eh(), TAO::Transport_Cache_Manager::find_transport(), TAO_Resume_Handle::handle_input_return_value_hook(), TAO_Transport::notify_reactor(), TAO_Transport::register_handler(), TAO_Leader_Follower::reset_client_thread(), TAO_Resume_Handle::resume_handle(), run(), TAO_Leader_Follower::set_client_thread(), TAO_Wait_On_Read::wait(), TAO_Wait_On_Reactor::wait(), and CORBA::ORB::work_pending().

02903 {
02904   return this->leader_follower ().reactor ();
02905 }

int TAO_ORB_Core::register_handle ACE_HANDLE  handle  ) 
 

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.

CORBA::Long TAO_ORB_Core::reinitialize_object TAO_Stub stub  ) 
 

Reinitialise a stub after the effective profile has changed. This will happen after a location forward has been received or if a location forward supplied new target subsequently fails.

Definition at line 2041 of file ORB_Core.cpp.

References TAO_Stub::base_profiles(), TAO_Stub::forward_profiles(), and initialize_object_i().

02042 {
02043   return initialize_object_i (stub, stub->forward_profiles ()
02044                                     ? *(stub->forward_profiles ())
02045                                     : stub->base_profiles ());
02046 }

int TAO_ORB_Core::remove_handle ACE_HANDLE  handle  ) 
 

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.

void TAO_ORB_Core::request_dispatcher TAO_Request_Dispatcher rd  ) 
 

Set a new request dispatcher. The ORB Core retains ownership of the request dispatcher once it gets it. Currently, this only gets called at initialization.

Definition at line 1906 of file ORB_Core.cpp.

References request_dispatcher_.

01907 {
01908   // Assume ownership of the request dispatcher.
01909   TAO_Request_Dispatcher *tmp = this->request_dispatcher_;
01910   this->request_dispatcher_ = request_dispatcher;
01911   delete tmp;
01912 }

ACE_INLINE TAO_Request_Dispatcher * TAO_ORB_Core::request_dispatcher void   ) 
 

Return the current request dispatcher strategy.

Definition at line 198 of file ORB_Core.i.

References request_dispatcher_.

Referenced by TAO::Collocated_Invocation::invoke(), TAO_GIOP_Message_Base::process_locate_request(), and TAO_GIOP_Message_Base::process_request().

00199 {
00200   return this->request_dispatcher_;
00201 }

ACE_INLINE void TAO_ORB_Core::reset_service_profile_flags void   ) 
 

Reset the flags in the loaded services.

Definition at line 117 of file ORB_Core.i.

References ft_service_, TAO_Service_Callbacks::reset_profile_flags(), and TAO_Fault_Tolerance_Service::service_callback().

00118 {
00119   // @@ If different services have the same feature we may want to
00120   // prioritise them here. We need to decide here whose selection of
00121   // profile is more important.
00122 
00123   if (this->ft_service_.service_callback ())
00124     {
00125       this->ft_service_.service_callback ()->reset_profile_flags ();
00126     }
00127   return;
00128 }

ACE_INLINE CORBA::Object_ptr TAO_ORB_Core::resolve_codecfactory  ) 
 

Resolve the CodecFactory DLL.

Definition at line 421 of file ORB_Core.i.

References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_codecfactory_i(), and TAO_SYNCH_MUTEX.

Referenced by CORBA::ORB::resolve_initial_references().

00422 {
00423   ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00424                     CORBA::Object::_nil ());
00425   if (CORBA::is_nil (this->codec_factory_))
00426     {
00427       this->resolve_codecfactory_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00428       ACE_CHECK_RETURN (CORBA::Object::_nil ());
00429     }
00430   return CORBA::Object::_duplicate (this->codec_factory_);
00431 }

void TAO_ORB_Core::resolve_codecfactory_i  )  [protected]
 

Obtain and cache the codec factory object reference.

Definition at line 2460 of file ORB_Core.cpp.

References ACE_CHECK, ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_TEXT, codec_factory_, configuration(), TAO_Object_Loader::create_object(), and ACE_Service_Gestalt::process_directive().

Referenced by resolve_codecfactory().

02461 {
02462   TAO_Object_Loader *loader =
02463     ACE_Dynamic_Service<TAO_Object_Loader>::instance
02464       (this->configuration (),
02465        ACE_TEXT ("CodecFactory_Loader"));
02466 
02467   if (loader == 0)
02468     {
02469       this->configuration()->process_directive
02470         (ACE_DYNAMIC_SERVICE_DIRECTIVE("CodecFactory",
02471                                        "TAO_CodecFactory",
02472                                        "_make_TAO_CodecFactory_Loader",
02473                                        ""));
02474       loader =
02475         ACE_Dynamic_Service<TAO_Object_Loader>::instance
02476           (this->configuration (), ACE_TEXT ("CodecFactory_Loader"));
02477     }
02478 
02479   if (loader != 0)
02480     {
02481       this->codec_factory_ =
02482         loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER);
02483       ACE_CHECK;
02484     }
02485 }

ACE_INLINE CORBA::Object_ptr TAO_ORB_Core::resolve_dynanyfactory  ) 
 

Resolve the Dynamic Any Factory.

Definition at line 481 of file ORB_Core.i.

References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_dynanyfactory_i(), and TAO_SYNCH_MUTEX.

Referenced by CORBA::ORB::resolve_initial_references().

00482 {
00483   ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00484                     CORBA::Object::_nil ());
00485   if (CORBA::is_nil (this->dynany_factory_))
00486     {
00487       this->resolve_dynanyfactory_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00488       ACE_CHECK_RETURN (CORBA::Object::_nil ());
00489     }
00490   return CORBA::Object::_duplicate (this->dynany_factory_);
00491 }

void TAO_ORB_Core::resolve_dynanyfactory_i  )  [protected]
 

Obtain and cache the dynamic any factory object reference.

Definition at line 2552 of file ORB_Core.cpp.

References ACE_CHECK, ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_TEXT, configuration(), TAO_Object_Loader::create_object(), dynany_factory_, and ACE_Service_Gestalt::process_directive().

Referenced by resolve_dynanyfactory().

02553 {
02554   TAO_Object_Loader *loader =
02555     ACE_Dynamic_Service<TAO_Object_Loader>::instance
02556       (this->configuration (),
02557        ACE_TEXT ("DynamicAny_Loader"));
02558 
02559   if (loader == 0)
02560     {
02561       this->configuration ()->process_directive
02562         (ACE_DYNAMIC_SERVICE_DIRECTIVE("DynamicAny_Loader",
02563                                        "TAO_DynamicAny",
02564                                        "_make_TAO_DynamicAny_Loader",
02565                                        ""));
02566       loader =
02567         ACE_Dynamic_Service<TAO_Object_Loader>::instance
02568         (this->configuration (),
02569          ACE_TEXT ("DynamicAny_Loader"));
02570     }
02571 
02572   if (loader != 0)
02573     {
02574       this->dynany_factory_ =
02575         loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER);
02576       ACE_CHECK;
02577     }
02578 }

ACE_INLINE CORBA::Object_ptr TAO_ORB_Core::resolve_ior_manipulation  ) 
 

Resolve the IOR Manipulation reference for this ORB.

Definition at line 494 of file ORB_Core.i.

References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_iormanipulation_i(), and TAO_SYNCH_MUTEX.

Referenced by CORBA::ORB::resolve_initial_references().

00495 {
00496   ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00497                     CORBA::Object::_nil ());
00498   if (CORBA::is_nil (this->ior_manip_factory_))
00499     {
00500       this->resolve_iormanipulation_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00501       ACE_CHECK_RETURN (CORBA::Object::_nil ());
00502     }
00503   return CORBA::Object::_duplicate (this->ior_manip_factory_);
00504 }

ACE_INLINE CORBA::Object_ptr TAO_ORB_Core::resolve_ior_table  ) 
 

Resolve the IOR Table reference for this ORB.

Definition at line 507 of file ORB_Core.i.

References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_ior_table_i(), and TAO_SYNCH_MUTEX.

Referenced by CORBA::ORB::resolve_initial_references().

00508 {
00509   ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00510                     CORBA::Object::_nil ());
00511   if (CORBA::is_nil (this->ior_table_))
00512     {
00513       this->resolve_ior_table_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00514       ACE_CHECK_RETURN (CORBA::Object::_nil ());
00515     }
00516   return CORBA::Object::_duplicate (this->ior_table_);
00517 }

void TAO_ORB_Core::resolve_ior_table_i  )  [private]
 

Obtain and cache the dynamic any factory object reference.

Definition at line 2609 of file ORB_Core.cpp.

References TAO_Pseudo_Var_T< T >::_retn(), ACE_CHECK, ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_TEXT, adapter_registry_, configuration(), TAO_Adapter_Factory::create(), ACE_Auto_Basic_Ptr< X >::get(), TAO_Adapter_Registry::insert(), ior_table_, CORBA::Object_var, ACE_Service_Gestalt::process_directive(), and ACE_Auto_Basic_Ptr< X >::release().

Referenced by resolve_ior_table().

02610 {
02611   TAO_Adapter_Factory *factory =
02612     ACE_Dynamic_Service<TAO_Adapter_Factory>::instance
02613       (this->configuration (),
02614        ACE_TEXT ("TAO_IORTable"));
02615 
02616   if (factory == 0)
02617     {
02618       this->configuration ()->process_directive
02619         (ACE_DYNAMIC_SERVICE_DIRECTIVE("TAO_IORTable",
02620                                        "TAO_IORTable",
02621                                        "_make_TAO_Table_Adapter_Factory",
02622                                        ""));
02623       factory =
02624         ACE_Dynamic_Service<TAO_Adapter_Factory>::instance
02625           (this->configuration (), ACE_TEXT ("TAO_IORTable"));
02626     }
02627 
02628   if (factory != 0)
02629     {
02630       ACE_Auto_Ptr <TAO_Adapter> iortable_adapter (factory->create (this));
02631       iortable_adapter->open (ACE_ENV_SINGLE_ARG_PARAMETER);
02632       ACE_CHECK;
02633 
02634       CORBA::Object_var tmp_root = iortable_adapter->root ();
02635 
02636       this->adapter_registry_.insert (iortable_adapter.get () ACE_ENV_ARG_PARAMETER);
02637       ACE_CHECK;
02638 
02639       // It is now (exception) safe to release ownership from the auto pointers
02640       this->ior_table_= tmp_root._retn ();
02641       iortable_adapter.release ();
02642     }
02643 }

void TAO_ORB_Core::resolve_iormanipulation_i  )  [protected]
 

Obtain and cache the IORManipulation factory object reference.

Definition at line 2581 of file ORB_Core.cpp.

References ACE_CHECK, ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_TEXT, configuration(), TAO_Object_Loader::create_object(), ior_manip_factory_, and ACE_Service_Gestalt::process_directive().

Referenced by resolve_ior_manipulation().

02582 {
02583   TAO_Object_Loader *loader =
02584     ACE_Dynamic_Service<TAO_Object_Loader>::instance
02585       (this->configuration (),
02586        ACE_TEXT ("IORManip_Loader"));
02587 
02588   if (loader == 0)
02589     {
02590       this->configuration()->process_directive
02591         (ACE_DYNAMIC_SERVICE_DIRECTIVE("IORManip_Loader",
02592                                        "TAO_IORManip",
02593                                        "_make_TAO_IORManip_Loader",
02594                                        ""));
02595       loader =
02596         ACE_Dynamic_Service<TAO_Object_Loader>::instance
02597           (this->configuration (), ACE_TEXT ("IORManip_Loader"));
02598     }
02599 
02600   if (loader != 0)
02601     {
02602       this->ior_manip_factory_ =
02603         loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER);
02604       ACE_CHECK;
02605     }
02606 }

ACE_INLINE CORBA::Object_ptr TAO_ORB_Core::resolve_picurrent  ) 
 

Resolve the PICurrent.

Definition at line 406 of file ORB_Core.i.

References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_picurrent_i(), and TAO_SYNCH_MUTEX.

Referenced by CORBA::ORB::resolve_initial_references().

00407 {
00408   ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00409                     CORBA::Object::_nil ());
00410   if (CORBA::is_nil (this->pi_current_))
00411     {
00412       this->resolve_picurrent_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00413       ACE_CHECK_RETURN (CORBA::Object::_nil ());
00414     }
00415   return CORBA::Object::_duplicate (this->pi_current_);
00416 }

void TAO_ORB_Core::resolve_picurrent_i  )  [protected]
 

Obtain and cache the picurrent factory object reference.

Definition at line 2519 of file ORB_Core.cpp.

References ACE_CHECK, ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_TEXT, configuration(), TAO_Object_Loader::create_object(), CORBA::Object_ptr, pi_current_, and ACE_Service_Gestalt::process_directive().

Referenced by resolve_picurrent().

02520 {
02521   TAO_Object_Loader *loader =
02522     ACE_Dynamic_Service<TAO_Object_Loader>::instance
02523       (this->configuration (),
02524        ACE_TEXT ("PICurrent_Loader"));
02525 
02526   if (loader == 0)
02527     {
02528       this->configuration ()->process_directive
02529         (ACE_DYNAMIC_SERVICE_DIRECTIVE("PICurrent_Loader",
02530                                        "TAO_PI",
02531                                        "_make_TAO_PICurrent_Loader",
02532                                        ""));
02533       loader =
02534         ACE_Dynamic_Service<TAO_Object_Loader>::instance
02535           (this->configuration (), ACE_TEXT ("PICurrent_Loader"));
02536     }
02537 
02538   if (loader != 0)
02539     {
02540       CORBA::Object_ptr pi =
02541         loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER);
02542       ACE_CHECK;
02543 
02544       this->pi_current_ = pi;
02545     }
02546 }

ACE_INLINE CORBA::Object_ptr TAO_ORB_Core::resolve_poa_current  ) 
 

Resolve POA Current.

Definition at line 560 of file ORB_Core.i.

References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_poa_current_i(), and TAO_SYNCH_MUTEX.

Referenced by CORBA::ORB::resolve_initial_references().

00561 {
00562   ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00563                     CORBA::Object::_nil ());
00564   if (CORBA::is_nil (this->poa_current_.in ()))
00565     {
00566       this->resolve_poa_current_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00567       ACE_CHECK_RETURN (CORBA::Object::_nil ());
00568     }
00569   return CORBA::Object::_duplicate (this->poa_current_.in ());
00570 }

void TAO_ORB_Core::resolve_poa_current_i  )  [protected]
 

Obtain and cache the poa current.

Definition at line 2488 of file ORB_Core.cpp.

References ACE_CHECK, ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_TEXT, configuration(), TAO_Object_Loader::create_object(), poa_current_, and ACE_Service_Gestalt::process_directive().

Referenced by resolve_poa_current().

02489 {
02490   TAO_Object_Loader *loader =
02491     ACE_Dynamic_Service<TAO_Object_Loader>::instance
02492       (this->configuration(),
02493        ACE_TEXT ("TAO_POA_Current_Factory"));
02494 
02495   if (loader == 0)
02496     {
02497       this->configuration()->process_directive
02498         (ACE_DYNAMIC_SERVICE_DIRECTIVE("TAO_POA_Current_Factory",
02499                                        "TAO_PortableServer",
02500                                        "_make_TAO_POA_Current_Factory",
02501                                        ""));
02502       loader =
02503         ACE_Dynamic_Service<TAO_Object_Loader>::instance
02504           (this->configuration(), ACE_TEXT ("TAO_POA_Current_Factory"));
02505     }
02506 
02507   if (loader != 0)
02508     {
02509       this->poa_current_ =
02510         loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER);
02511       ACE_CHECK;
02512     }
02513 }

CORBA::Object_ptr TAO_ORB_Core::resolve_rir const char *  name  ) 
 

Resolve an initial reference via the -ORBInitRef and.

Definition at line 2669 of file ORB_Core.cpp.

References CORBA::Object::_nil(), ACE_CHECK_RETURN, ACE_CString, ACE_ENV_ARG_PARAMETER, ACE_ENV_SINGLE_ARG_PARAMETER, connector_registry(), TAO_ORB_Parameters::default_init_ref(), TAO::String_var< charT >::in(), TAO_Connector_Registry::object_key_delimiter(), orb(), orb_params(), CORBA::ORB::string_to_object(), CORBA::String_var, ACE_OS::strlen(), and ACE_OS::strncmp().

Referenced by CORBA::ORB::resolve_initial_references().

02671 {
02672   // Get the table of initial references specified through
02673   // -ORBInitRef.
02674   ACE_CString ior;
02675   ACE_CString object_id ((const char *) name);
02676 
02677   // Get the list of initial reference prefixes specified through
02678   // -ORBDefaultInitRef.
02679   CORBA::String_var default_init_ref =
02680     this->orb_params ()->default_init_ref ();
02681 
02682   // Check if a DefaultInitRef was specified.
02683   if (ACE_OS::strlen (default_init_ref.in ()) != 0)
02684     {
02685       static const char corbaloc_prefix[] = "corbaloc:";
02686       static const char mcast_prefix[] = "mcast:";
02687       char object_key_delimiter = 0;
02688 
02689       ACE_CString list_of_profiles (default_init_ref.in ());
02690 
02691       // Check if the protocol is corbaloc: or mcast:.
02692       // If it is, set the object_key_delimiter.
02693       if ((ACE_OS::strncmp (default_init_ref.in (),
02694                             corbaloc_prefix,
02695                             sizeof corbaloc_prefix -1) == 0) ||
02696           (ACE_OS::strncmp (default_init_ref.in (),
02697                             mcast_prefix,
02698                             sizeof mcast_prefix -1) == 0))
02699         {
02700           object_key_delimiter = '/';
02701         }
02702       else
02703         {
02704           TAO_Connector_Registry *conn_reg =
02705             this->connector_registry (ACE_ENV_SINGLE_ARG_PARAMETER);
02706           ACE_CHECK_RETURN (0);
02707 
02708           // Obtain the appropriate object key delimiter for the
02709           // specified protocol.
02710           object_key_delimiter =
02711             conn_reg->object_key_delimiter (list_of_profiles.c_str ());
02712         }
02713 
02714       // Make sure that the default initial reference doesn't end
02715       // with the object key delimiter character.
02716       if (list_of_profiles[list_of_profiles.length() - 1] !=
02717           object_key_delimiter)
02718             list_of_profiles += ACE_CString (object_key_delimiter);
02719 
02720       list_of_profiles += object_id;
02721 
02722       return this->orb ()->string_to_object (list_of_profiles.c_str ()
02723                                              ACE_ENV_ARG_PARAMETER);
02724     }
02725 
02726   return CORBA::Object::_nil ();
02727 }

ACE_INLINE CORBA::Object_ptr TAO_ORB_Core::resolve_rt_orb void   ) 
 

Resolve the RT ORB reference for this ORB.

Definition at line 583 of file ORB_Core.i.

References CORBA::Object::_duplicate(), ACE_GUARD_RETURN, CORBA::is_nil(), object_ref_table(), TAO_Object_Ref_Table::resolve_initial_reference(), rt_orb_, TAO_OBJID_RTORB, and TAO_SYNCH_MUTEX.

00584 {
00585   if (CORBA::is_nil (this->rt_orb_.in ()))
00586     {
00587       ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00588                         CORBA::Object::_nil ());
00589       if (CORBA::is_nil (this->rt_orb_.in ()))
00590         {
00591           // Save a reference to the priority mapping manager.
00592           this->rt_orb_ =
00593               this->object_ref_table ().resolve_initial_reference (
00594               TAO_OBJID_RTORB);
00595         }
00596     }
00597 
00598   return CORBA::Object::_duplicate (this->rt_orb_.in ());
00599 }

ACE_INLINE CORBA::Object_ptr TAO_ORB_Core::resolve_typecodefactory  ) 
 

Resolve the TypeCodeFactory DLL.

Definition at line 391 of file ORB_Core.i.

References CORBA::Object::_duplicate(), ACE_CHECK_RETURN, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, CORBA::is_nil(), resolve_typecodefactory_i(), and TAO_SYNCH_MUTEX.

Referenced by CORBA::ORB::resolve_initial_references().

00392 {
00393   ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_,
00394                     CORBA::Object::_nil ());
00395   if (CORBA::is_nil (this->typecode_factory_))
00396     {
00397       this->resolve_typecodefactory_i (ACE_ENV_SINGLE_ARG_PARAMETER);
00398       ACE_CHECK_RETURN (CORBA::Object::_nil ());
00399     }
00400   return CORBA::Object::_duplicate (this->typecode_factory_);
00401 }

void TAO_ORB_Core::resolve_typecodefactory_i  )  [protected]
 

Obtain and cache the typecode factory object reference.

Definition at line 2427 of file ORB_Core.cpp.

References ACE_DYNAMIC_SERVICE_DIRECTIVE, ACE_ENV_ARG_PARAMETER, ACE_ERROR, ACE_TEXT, ACE_THROW, configuration(), TAO_Object_Loader::create_object(), LM_ERROR, ACE_Service_Gestalt::process_directive(), and typecode_factory_.

Referenced by resolve_typecodefactory().

02428 {
02429   TAO_Object_Loader *loader =
02430     ACE_Dynamic_Service<TAO_Object_Loader>::instance
02431       (this->configuration (),
02432        ACE_TEXT ("TypeCodeFactory_Loader"));
02433 
02434   if (loader == 0)
02435     {
02436       this->configuration ()->process_directive
02437         (ACE_DYNAMIC_SERVICE_DIRECTIVE("TypeCodeFactory",
02438                                        "TAO_TypeCodeFactory",
02439                                        "_make_TAO_TypeCodeFactory_Loader",
02440                                        ""));
02441       loader =
02442         ACE_Dynamic_Service<TAO_Object_Loader>::instance
02443         (this->configuration (),
02444          ACE_TEXT ("TypeCodeFactory_Loader"));
02445 
02446       if (loader == 0)
02447         {
02448           ACE_ERROR ((LM_ERROR,
02449                       ACE_TEXT ("(%P|%t) Unable to instantiate ")
02450                       ACE_TEXT ("a TypeCodeFactory_Loader\n")));
02451           ACE_THROW (CORBA::ORB::InvalidName ());
02452         }
02453     }
02454 
02455   this->typecode_factory_ =
02456     loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER);
02457 }

TAO_Resource_Factory * TAO_ORB_Core::resource_factory void   ) 
 

Returns pointer to the resource factory.

Definition at line 1518 of file ORB_Core.cpp.

References ACE_CString, ACE_TEXT_CHAR_TO_TCHAR, configuration(), TAO_ORB_Core_Static_Resources::instance(), resource_factory_, and TAO_ORB_Core_Static_Resources::resource_factory_name_.

Referenced by TAO_Thread_Lane_Resources::acceptor_registry(), TAO_Thread_Lane_Resources::cleanup_rw_transports(), codeset_manager(), TAO_Thread_Lane_Resources::connector_registry(), create_input_cdr_data_block(), TAO::demarshal_sequence(), fragmentation_strategy(), TAO::ObjectKey_Table::init(), locking_strategy(), CORBA::Object::Object(), TAO_Parser_Registry::open(), operator>>(), TAO_Leader_Follower::reactor(), TAO_Thread_Lane_Resources::resource_factory(), TAO_Leader_Follower::set_client_thread(), TAO_Thread_Lane_Resources::shutdown_reactor(), TAO_Asynch_Reply_Dispatcher_Base::TAO_Asynch_Reply_Dispatcher_Base(), TAO_Connection_Handler::TAO_Connection_Handler(), TAO_Thread_Lane_Resources_Manager::TAO_Thread_Lane_Resources_Manager(), TAO::Transport_Cache_Manager::Transport_Cache_Manager(), and TAO_Leader_Follower::~TAO_Leader_Follower().

01519 {
01520   // Check if there is a cached reference.
01521   if (this->resource_factory_ != 0)
01522     {
01523       return this->resource_factory_;
01524     }
01525 
01526   // Look in the service repository for an instance.
01527   ACE_CString &resource_factory_name =
01528     TAO_ORB_Core_Static_Resources::instance ()->resource_factory_name_;
01529 
01530   this->resource_factory_ =
01531     ACE_Dynamic_Service<TAO_Resource_Factory>::instance
01532       (this->configuration (),
01533        ACE_TEXT_CHAR_TO_TCHAR (resource_factory_name.c_str()));
01534 
01535   return this->resource_factory_;
01536 }

CORBA::Object_ptr TAO_ORB_Core::root_poa  ) 
 

Return the RootPOA, or try to load it if not initialized already.

Definition at line 1813 of file ORB_Core.cpp.

References CORBA::Object::_duplicate(), CORBA::Object::_nil(), ACE_CHECK_RETURN, ACE_ENV_ARG_PARAMETER, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, ACE_TEXT_CHAR_TO_TCHAR, adapter_registry_, configuration(), TAO_Adapter_Factory::create(), TAO_Adapter_Registry::insert(), TAO_ORB_Core_Static_Resources::instance(), CORBA::is_nil(), TAO_Adapter::open(), poa_adapter(), TAO_ORB_Core_Static_Resources::poa_factory_directive_, TAO_ORB_Core_Static_Resources::poa_factory_name_, ACE_Service_Gestalt::process_directive(), TAO_Adapter::root(), root_poa_, and TAO_SYNCH_MUTEX.

Referenced by CORBA::ORB::resolve_initial_references().

01814 {
01815   // DCL ..
01816   if (CORBA::is_nil (this->root_poa_.in ()))
01817     {
01818 
01819       // Making sure the initialization process in the current thread uses
01820       // the correct service repository (ours), instead of the global one.
01821       ACE_Service_Config_Guard scg (this->configuration ());
01822 
01823 
01824       TAO_ORB_Core_Static_Resources* static_resources =
01825         TAO_ORB_Core_Static_Resources::instance ();
01826 
01827       TAO_Adapter_Factory *factory =
01828         ACE_Dynamic_Service<TAO_Adapter_Factory>::instance
01829           (this->configuration (),
01830           static_resources->poa_factory_name_.c_str());
01831 
01832       if (factory == 0)
01833         {
01834           this->configuration()->process_directive (
01835            ACE_TEXT_CHAR_TO_TCHAR (
01836              static_resources->poa_factory_directive_.c_str()));
01837 
01838           factory =
01839             ACE_Dynamic_Service<TAO_Adapter_Factory>::instance
01840               (this->configuration (),
01841               static_resources->poa_factory_name_.c_str());
01842         }
01843 
01844       if (factory == 0)
01845         {
01846           return CORBA::Object::_nil ();
01847         }
01848 
01849       ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
01850                         monitor,
01851                         this->open_lock_,
01852                         0);
01853 
01854       if (CORBA::is_nil (this->root_poa_.in ()))
01855         {
01856           // @@ Not exception safe
01857           TAO_Adapter *poa_adapter =
01858             factory->create (this);
01859 
01860           poa_adapter->open (ACE_ENV_SINGLE_ARG_PARAMETER);
01861           ACE_CHECK_RETURN (CORBA::Object::_nil ());
01862 
01863           // @@ Not exception safe
01864           this->root_poa_ =
01865             poa_adapter->root ();
01866 
01867           this->adapter_registry_.insert (poa_adapter
01868                                           ACE_ENV_ARG_PARAMETER);
01869           ACE_CHECK_RETURN (CORBA::Object::_nil ());
01870         }
01871     }
01872 
01873   return CORBA::Object::_duplicate (this->root_poa_.in ());
01874 }

int TAO_ORB_Core::run ACE_Time_Value tv,
int  perform_work
 

Run the event loop.

Definition at line 2140 of file ORB_Core.cpp.

References ACE_DEBUG, ACE_TEXT, TAO_Server_Strategy_Factory::activate_server_connections(), ETIME, TAO_LF_Event_Loop_Thread_Helper::event_loop_return(), ACE_Reactor::handle_events(), has_shutdown(), leader_follower(), lf_strategy(), LM_DEBUG, ACE_Reactor::owner(), reactor(), server_factory_, TAO_debug_level, and ACE_Thread_Manager::wait().

Referenced by TAO_Reactive_Flushing_Strategy::flush_message(), TAO_Reactive_Flushing_Strategy::flush_transport(), TAO_Leader_Follower_Flushing_Strategy::flush_transport(), CORBA::ORB::perform_work(), CORBA::ORB::run(), and TAO_Reactive_Connect_Strategy::wait_i().

02143 {
02144   // ORB::run may be called from a thread, different from the one that
02145   // did the ORB_init, consequently we must establish the Service
02146   // Gestalt, this thread will consider "global"
02147 
02148   ACE_Service_Config_Guard use_orbs (this->configuration());
02149 
02150   if (TAO_debug_level > 2)
02151     {
02152       ACE_DEBUG ((LM_DEBUG,
02153                   ACE_TEXT ("TAO (%P|%t) - ORB_Core::run, ")
02154                   ACE_TEXT ("start [%s]\n"),
02155                   perform_work?ACE_TEXT("perform_work"):ACE_TEXT("run")));
02156     }
02157 
02158   // Fetch the Reactor
02159   ACE_Reactor *r = this->reactor ();
02160 
02161   int result = 1;
02162   // 1 to detect that nothing went wrong
02163 
02164   // Loop handling client requests until the ORB is shutdown.
02165 
02166   // We could use the leader-follower lock to check for the state
02167   // if this variable or use the lock <create_event_loop_lock> in
02168   // the server strategy factory.
02169   // We don't need to do this because we use the Reactor
02170   // mechanisms to shutdown in a thread-safe way.
02171 
02172   while (this->has_shutdown () == 0)
02173     {
02174       // Every time we perform an interation we have to become the
02175       // leader again, because it is possible that a client has
02176       // acquired the leader role...
02177       TAO_Leader_Follower &leader_follower =
02178         this->leader_follower ();
02179 
02180       TAO_LF_Strategy &lf_strategy =
02181         this->lf_strategy ();
02182 
02183       TAO_LF_Event_Loop_Thread_Helper helper (leader_follower,
02184                                               lf_strategy,
02185                                               tv);
02186       result = helper.event_loop_return ();
02187       if (result != 0)
02188         {
02189           if (errno == ETIME)
02190             return 0;
02191           else
02192             return result;
02193         }
02194 
02195       // Set the owning thread of the Reactor to the one which we're
02196       // currently in.  This is necessary b/c it's possible that the
02197       // application is calling us from a thread other than that in which
02198       // the Reactor's CTOR (which sets the owner) was called.
02199       //
02200       // We need to do this on every iteration because the reactor may be
02201       // acquired by one of the client threads in the LF waiting
02202       // strategy
02203       r->owner (ACE_Thread::self ());
02204 
02205       if (TAO_debug_level > 2)
02206         {
02207           ACE_DEBUG ((LM_DEBUG,
02208                       ACE_TEXT ("TAO (%P|%t) - ORB_Core::run, ")
02209                       ACE_TEXT ( "calling handle_events()\n")));
02210         }
02211 
02212       result = r->handle_events (tv);
02213 
02214       if (TAO_debug_level > 2)
02215         {
02216           ACE_DEBUG ((LM_DEBUG,
02217                       ACE_TEXT ("TAO (%P|%t) - ORB_Core::run, ")
02218                       ACE_TEXT ("handle_events() returns %d\n"),
02219                       result));
02220         }
02221 
02222       if (result == -1)
02223         {
02224           // An error, terminate the loop
02225           break;
02226         }
02227       if (result == 0
02228           && tv != 0
02229           && *tv == ACE_Time_Value::zero)
02230         {
02231           // A timeout, terminate the loop...
02232           break;
02233         }
02234 
02235       if (perform_work)
02236         {
02237           // This is running on behalf of a perform_work() call,
02238           // The loop should run only once.
02239           break;
02240         }
02241       // Otherwise just continue..
02242     }
02243 
02244   if (this->has_shutdown () == 1 &&
02245       this->server_factory_->activate_server_connections ())
02246       this->tm_.wait ();
02247 
02248   if (TAO_debug_level > 2)
02249     {
02250       ACE_DEBUG ((LM_DEBUG,
02251                   ACE_TEXT ("TAO (%P|%t) - ORB_Core::run, ")
02252                   ACE_TEXT ("ends with result = %d\n"),
02253                   result));
02254     }
02255 
02256   return result;
02257 }

TAO_Server_Strategy_Factory * TAO_ORB_Core::server_factory void   ) 
 

Returns pointer to the server factory.

Definition at line 1798 of file ORB_Core.cpp.

References ACE_TEXT, configuration(), and server_factory_.

Referenced by TAO_Concurrency_Strategy< SVC_HANDLER >::activate_svc_handler().

01799 {
01800   if (this->server_factory_ == 0)
01801     {
01802       // Look in the service repository for an instance.
01803       this->server_factory_ =
01804         ACE_Dynamic_Service<TAO_Server_Strategy_Factory>::instance
01805           (this->configuration (),
01806            ACE_TEXT ("Server_Strategy_Factory"));
01807     }
01808 
01809   return this->server_factory_;
01810 }

ACE_INLINE const char * TAO_ORB_Core::server_id void   )  const
 

Resolve the RT Current flyweight for this ORB. Return server_id string.

Definition at line 434 of file ORB_Core.i.

References server_id_.

00435 {
00436   return this->server_id_.c_str();
00437 }

ACE_INLINE TAO::ServerRequestInterceptor_Adapter * TAO_ORB_Core::serverrequestinterceptor_adapter void   ) 
 

Get the Server Request Interceptor adapter. Will not create a new one if not available yet.

Definition at line 627 of file ORB_Core.i.

References server_request_interceptor_adapter_.

Referenced by TAO_ServerRequest::rs_pi_current(), and TAO_ServerRequest::~TAO_ServerRequest().

00628 {
00629   return this->server_request_interceptor_adapter_;
00630 }

TAO::ServerRequestInterceptor_Adapter * TAO_ORB_Core::serverrequestinterceptor_adapter_i void   )  [protected]
 

Get the Server Request Interceptor adapter. If not created, this method will try to create one if needed.

Definition at line 3420 of file ORB_Core.cpp.

References ACE_GUARD_RETURN, ACE_TEXT, configuration(), TAO_ServerRequestInterceptor_Adapter_Factory::create(), server_request_interceptor_adapter_, and TAO_SYNCH_MUTEX.

Referenced by add_interceptor().

03421 {
03422   if (this->server_request_interceptor_adapter_ == 0)
03423     {
03424       ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
03425                         ace_mon,
03426                         this->lock_,
03427                         0);
03428 
03429       if (this->server_request_interceptor_adapter_ == 0)
03430         {
03431           TAO_ServerRequestInterceptor_Adapter_Factory *factory =
03432             ACE_Dynamic_Service<TAO_ServerRequestInterceptor_Adapter_Factory>::instance
03433               (this->configuration (),
03434                ACE_TEXT ("ServerRequestInterceptor_Adapter_Factory"));
03435 
03436           if (factory)
03437             {
03438               this->server_request_interceptor_adapter_ =
03439                 factory->create ();
03440             }
03441         }
03442     }
03443 
03444   return this->server_request_interceptor_adapter_;
03445 }

void TAO_ORB_Core::service_context_list TAO_Stub stub,
TAO_Service_Context service_context,
CORBA::Boolean  retstart
 

Call the service layers with the Service Context to check whether they would like to add something to the list.

Definition at line 1768 of file ORB_Core.cpp.

References ACE_CHECK, ACE_ENV_ARG_PARAMETER, protocols_hooks_, and TAO_Protocols_Hooks::rt_service_context().

Referenced by TAO::Remote_Invocation::init_target_spec().

01773 {
01774   // @NOTE: Can use Interceptors instead..
01775   this->protocols_hooks_->rt_service_context (stub,
01776                                               service_context,
01777                                               restart
01778                                               ACE_ENV_ARG_PARAMETER);
01779   ACE_CHECK;
01780 }

ACE_INLINE CORBA::Boolean TAO_ORB_Core::service_profile_reselection TAO_Stub stub,
TAO_Profile *&  profile
 

The loaded service in the ORB_Core would determine if the profile reselection is going to be made by the services or not. If the services do make the reselection they would return the selected profile through . The reselction is for the multi-profile IORS.

Definition at line 100 of file ORB_Core.i.

References ft_service_, TAO_Service_Callbacks::reselect_profile(), and TAO_Fault_Tolerance_Service::service_callback().

00102 {
00103   CORBA::Boolean retval = 0;
00104   // @@ If different services have the same feature we may want to
00105   // prioritise them here. We need to decide here whose selection of
00106   // profile is more important.
00107   if (this->ft_service_.service_callback ())
00108     {
00109       retval =
00110         this->ft_service_.service_callback ()->reselect_profile (stub,
00111                                                                  profile);
00112     }
00113   return retval;
00114 }

ACE_INLINE CORBA::Boolean TAO_ORB_Core::service_profile_selection TAO_MProfile mprofile,
TAO_Profile *&  profile
 

The loaded service in the ORB_Core would determine if the profile selection is going to be made by the services or not. If the services do make the selection they would return the selected profile through .

Definition at line 83 of file ORB_Core.i.

References ft_service_, TAO_Service_Callbacks::select_profile(), and TAO_Fault_Tolerance_Service::service_callback().

00085 {
00086   CORBA::Boolean retval = 0;
00087   // @@ If different services have the same feature we may want to
00088   // prioritise them here. We need to decide here whose selection of
00089   // profile is more important.
00090   if (this->ft_service_.service_callback ())
00091     {
00092       retval =
00093         this->ft_service_.service_callback ()->select_profile (&mprofile,
00094                                                                 profile);
00095     }
00096   return retval;
00097 }

TAO::Invocation_Status TAO_ORB_Core::service_raise_comm_failure IOP::ServiceContextList clist,
TAO_Profile profile
 

Raise a comm failure exception if a service is not loaded, else delegate to the service to see what the service has to do for this case.

Definition at line 1728 of file ORB_Core.cpp.

References ACE_ENV_ARG_PARAMETER, ACE_THROW_RETURN, ft_service_, TAO_Fault_Tolerance_Service::service_callback(), and TAO_INVOCATION_RECV_REQUEST_MINOR_CODE.

01732 {
01733   if (this->ft_service_.service_callback ())
01734     {
01735       return this->ft_service_.service_callback ()->
01736                  raise_comm_failure (clist,
01737                                      profile
01738                                      ACE_ENV_ARG_PARAMETER);
01739     }
01740 
01741   ACE_THROW_RETURN (CORBA::COMM_FAILURE (
01742       CORBA::SystemException::_tao_minor_code (
01743           TAO_INVOCATION_RECV_REQUEST_MINOR_CODE,
01744           errno),
01745       CORBA::COMPLETED_MAYBE),
01746       TAO::TAO_INVOKE_SYSTEM_EXCEPTION);
01747 }

TAO::Invocation_Status TAO_ORB_Core::service_raise_transient_failure IOP::ServiceContextList clist,
TAO_Profile profile
 

Raise a transient failure exception if a service is not loaded, else delegate to the service to see what the service has to do for this case.

Definition at line 1751 of file ORB_Core.cpp.

References ACE_ENV_ARG_PARAMETER, ft_service_, TAO_Service_Callbacks::raise_transient_failure(), and TAO_Fault_Tolerance_Service::service_callback().

01755 {
01756   if (this->ft_service_.service_callback ())
01757     {
01758       return
01759         this->ft_service_.service_callback ()->raise_transient_failure (clist,
01760                                  profile
01761                                  ACE_ENV_ARG_PARAMETER);
01762     }
01763 
01764   return TAO::TAO_INVOKE_FAILURE;
01765 }

void TAO_ORB_Core::services_callbacks_init void   )  [protected]
 

Search the Dynamic service list for well known services that has callbacks which can be dynamically loaded.

Definition at line 1717 of file ORB_Core.cpp.

References ft_service_, and TAO_Fault_Tolerance_Service::init().

01718 {
01719   // We (should) know what are the services that would need
01720   // callbacks. So, what we do is go through the Service Configurator
01721   // list for looking at the services that we want to load.
01722   this->ft_service_.init (this);
01723 
01724   // @@ Other service callbacks can be added here
01725 }

void TAO_ORB_Core::set_collocation_resolver const char *  collocation_resolver_name  )  [static]
 

Sets the value of TAO_ORB_Core::collocation_resolver_name_.

Definition at line 1423 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::collocation_resolver_name_, and TAO_ORB_Core_Static_Resources::instance().

01424 {
01425   TAO_ORB_Core_Static_Resources::instance ()->collocation_resolver_name_ =
01426     collocation_resolver_name;
01427 }

ACE_INLINE void TAO_ORB_Core::set_default const char *  orb_id  ) 
 

Set the ORB related to the orb_id as the default ORB and not the ORB that is first binded in the ORB Table

Definition at line 210 of file ORB_Core.i.

References TAO::ORB_Table::instance(), and TAO::ORB_Table::set_default().

00211 {
00212   TAO::ORB_Table * const table = TAO::ORB_Table::instance ();
00213   table->set_default (orb_id);
00214 }

int TAO_ORB_Core::set_endpoint_helper const ACE_CString lane,
const ACE_CString endpoints
[protected]
 

Pointer to the list of protocol loaded into this ORB instance. Helper method to hold the common code part for -ORBEndpoint and -ORBListenEndpoint options.

Definition at line 2646 of file ORB_Core.cpp.

References ACE_ERROR, ACE_TEXT, ACE_TEXT_CHAR_TO_TCHAR, ACE_THROW_RETURN, TAO_ORB_Parameters::add_endpoints(), LM_ERROR, orb_params(), and TAO_ORB_CORE_INIT_LOCATION_CODE.

02649 {
02650   if (this->orb_params ()->add_endpoints (lane,
02651                                           endpoints) != 0)
02652     {
02653       ACE_ERROR ((LM_ERROR,
02654                   ACE_TEXT ("(%P|%t)\n")
02655                   ACE_TEXT ("Invalid endpoint(s) specified:\n%s\n"),
02656                   ACE_TEXT_CHAR_TO_TCHAR(endpoints.c_str ())));
02657       ACE_THROW_RETURN (CORBA::BAD_PARAM (
02658                            CORBA::SystemException::_tao_minor_code (
02659                               TAO_ORB_CORE_INIT_LOCATION_CODE,
02660                               EINVAL),
02661                            CORBA::COMPLETED_NO),
02662                         -1);
02663     }
02664 
02665   return 0;
02666 }

void TAO_ORB_Core::set_endpoint_selector_factory const char *  endpoint_selector_factory_name  )  [static]
 

Sets the value of TAO_ORB_Core::endpoint_selector_factory_.

Definition at line 1683 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::endpoint_selector_factory_name_, and TAO_ORB_Core_Static_Resources::instance().

01684 {
01685   TAO_ORB_Core_Static_Resources::instance ()->endpoint_selector_factory_name_ =
01686     endpoint_selector_factory_name;
01687 }

void TAO_ORB_Core::set_gui_resource_factory TAO::GUIResource_Factory gui_factory  )  [static]
 

Sets the value of TAO_ORB_Core::gui_resource_factory_.

Sets the value of gui_resource_factory in TSS. ORB_Core is responsible for releasing this factory if needed.

Definition at line 1444 of file ORB_Core.cpp.

References ACE_DEBUG, TAO_TSS_Resources::gui_resource_factory_, TAO_TSS_Resources::instance(), and LM_WARNING.

Referenced by TAO::FlResource_Loader::FlResource_Loader(), TAO::QtResource_Loader::QtResource_Loader(), TAO::TkResource_Loader::TkResource_Loader(), and TAO::XtResource_Loader::XtResource_Loader().

01445 {
01446   if (TAO_TSS_Resources::instance ()->gui_resource_factory_ != 0)
01447     {
01448 
01449       ACE_DEBUG ((LM_WARNING,
01450                   "TAO (%P|%t) - Deleting old gui_resource_factory.\n"));
01451       delete TAO_TSS_Resources::instance ()->gui_resource_factory_;
01452     }
01453 
01454   TAO_TSS_Resources::instance ()->gui_resource_factory_ = gui_resource_factory;
01455 }

void TAO_ORB_Core::set_poa_factory const char *  poa_factory_name,
const char *  poa_factory_directive
[static]
 

Sets the name of the POA factory and the dynamic service configurator directive to load it if needed.

Definition at line 1667 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), TAO_ORB_Core_Static_Resources::poa_factory_directive_, and TAO_ORB_Core_Static_Resources::poa_factory_name_.

01669 {
01670   TAO_ORB_Core_Static_Resources::instance ()->poa_factory_name_ =
01671     poa_factory_name;
01672   TAO_ORB_Core_Static_Resources::instance ()->poa_factory_directive_ =
01673     poa_factory_directive;
01674 }

void TAO_ORB_Core::set_protocols_hooks const char *  protocols_hooks_name  )  [static]
 

Sets the value of TAO_ORB_Core::protocols_hooks_.

Definition at line 1709 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::protocols_hooks_name_.

01710 {
01711   // Is synchronization necessary?
01712   TAO_ORB_Core_Static_Resources::instance ()->protocols_hooks_name_ =
01713     protocols_hooks_name;
01714 }

void TAO_ORB_Core::set_resource_factory const char *  resource_factory_name  )  [static]
 

Sets the value of TAO_ORB_Core::resource_factory_.

Definition at line 1437 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::resource_factory_name_.

01438 {
01439   TAO_ORB_Core_Static_Resources::instance ()->resource_factory_name_ =
01440     resource_factory_name;
01441 }

void TAO_ORB_Core::set_stub_factory const char *  stub_factory_name  )  [static]
 

Sets the value of TAO_ORB_Core::stub_factory_name_.

Definition at line 1430 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::stub_factory_name_.

01431 {
01432   TAO_ORB_Core_Static_Resources::instance ()->stub_factory_name_ =
01433     stub_factory_name;
01434 }

void TAO_ORB_Core::set_sync_scope_hook Sync_Scope_Hook  hook  )  [static]
 

Definition at line 2987 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), and Sync_Scope_Hook.

02988 {
02989   TAO_ORB_Core_Static_Resources::instance ()-> sync_scope_hook_ = hook;
02990 }

void TAO_ORB_Core::set_thread_lane_resources_manager_factory const char *  thread_lane_resources_manager_factory_name  )  [static]
 

Sets the value of TAO_ORB_Core::thread_lane_resources_manager_factory_name_

Definition at line 1416 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::thread_lane_resources_manager_factory_name_.

01417 {
01418   TAO_ORB_Core_Static_Resources::instance ()->thread_lane_resources_manager_factory_name_ =
01419     thread_lane_resources_manager_factory_name;
01420 }

void TAO_ORB_Core::set_timeout_hook Timeout_Hook  hook  )  [static]
 

Definition at line 3017 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), Timeout_Hook, and TAO_ORB_Core_Static_Resources::timeout_hook_.

03018 {
03019   // Saving the hook pointer so that we can use it later when needed.
03020   TAO_ORB_Core_Static_Resources::instance ()->timeout_hook_ = hook;
03021 }

ACE_INLINE int TAO_ORB_Core::set_tss_resource size_t  slot_id,
void * 
 

Set the TSS resource at the given slot. Returns 0 on success, and -1 on failure.

Definition at line 307 of file ORB_Core.i.

References get_tss_resources(), TAO_ORB_Core_TSS_Resources::orb_core_, ACE_Array_Base< void * >::size(), TAO_Cleanup_Func_Registry::size(), TAO_ORB_Core_TSS_Resources::ts_objects_, and tss_cleanup_funcs_.

00308 {
00309   TAO_ORB_Core_TSS_Resources *tss_resources =
00310     this->get_tss_resources ();
00311 
00312   // The number of allocated slots is equal to the number of
00313   // registered TSS cleanup functions, *not* the size of the array in
00314   // the ORB core TSS resources.
00315   if (slot_id >= this->tss_cleanup_funcs_.size ())
00316     {
00317       errno = EINVAL;
00318       return -1;
00319     }
00320 
00321   // If the TSS array isn't large enough, then increase its size.
00322   // We're guaranteed not to exceed the number of allocated slots by
00323   // the above check.
00324   const size_t old_size = tss_resources->ts_objects_.size ();
00325   const size_t new_size = slot_id + 1;
00326   if (slot_id >= old_size
00327       && tss_resources->ts_objects_.size (new_size) != 0)
00328     return -1;
00329 
00330   // Initialize intermediate array elements to zero, since they
00331   // haven't been initialized yet.  This ensures that garbage is not
00332   // returned when accessing any of those elements at a later point in
00333   // time.
00334   for (size_t i = old_size; i < slot_id; ++i)
00335     tss_resources->ts_objects_[i] = 0;
00336 
00337   tss_resources->ts_objects_[slot_id] = ts_object;
00338 
00339   // Make sure the ORB core pointer is set in the ORB core's TSS
00340   // resources so that the TSS cleanup functions stored in the ORB
00341   // core can be invoked.
00342   tss_resources->orb_core_ = this;
00343 
00344   return 0;
00345 }

void TAO_ORB_Core::shutdown CORBA::Boolean  wait_for_completion  ) 
 

End the event loop.

Definition at line 2261 of file ORB_Core.cpp.

References CORBA::Object::_nil(), ACE_CHECK, ACE_ENV_ARG_PARAMETER, ACE_GUARD, adapter_registry_, ACE_Thread_Manager::cancel_all(), TAO_Adapter_Registry::check_close(), TAO_Thread_Lane_Resources_Manager::cleanup_rw_transports(), TAO_Adapter_Registry::close(), TAO_Object_Ref_Table::destroy(), has_shutdown(), has_shutdown_, object_ref_table_, pi_current_, CORBA::release(), TAO_Thread_Lane_Resources_Manager::shutdown_reactor(), TAO_SYNCH_MUTEX, thr_mgr(), thread_lane_resources_manager(), valuetype_adapter_, and ACE_Thread_Manager::wait().

Referenced by destroy(), fini(), and CORBA::ORB::shutdown().

02263 {
02264   {
02265     ACE_GUARD (TAO_SYNCH_MUTEX, monitor, this->lock_);
02266 
02267     if (this->has_shutdown () != 0)
02268       return;
02269 
02270     // Check if we are on the right state, i.e. do not accept
02271     // shutdowns with the 'wait_for_completion' flag set in the middle
02272     // of an upcall (because those deadlock).
02273     this->adapter_registry_.check_close (wait_for_completion
02274                                          ACE_ENV_ARG_PARAMETER);
02275     ACE_CHECK;
02276 
02277     // Set the 'has_shutdown' flag, so any further attempt to shutdown
02278     // becomes a noop.
02279     this->has_shutdown_ = 1;
02280 
02281     // need to release the mutex, because some of the shutdown
02282     // operations invoke application code, that could (and in practice
02283     // does!) callback into ORB Core code.
02284   }
02285 
02286   this->adapter_registry_.close (wait_for_completion
02287                                  ACE_ENV_ARG_PARAMETER);
02288   ACE_CHECK;
02289 
02290   // Shutdown reactor.
02291   this->thread_lane_resources_manager ().shutdown_reactor ();
02292 
02293   // Cleanup transports that use the RW strategies
02294   this->thread_lane_resources_manager ().cleanup_rw_transports ();
02295 
02296   // Grab the thread manager
02297   ACE_Thread_Manager *tm = this->thr_mgr ();
02298 
02299   // Try to cancel all the threads in the ORB.
02300   tm->cancel_all ();
02301 
02302   // If <wait_for_completion> is set, wait for all threads to exit.
02303   if (wait_for_completion != 0)
02304     tm->wait ();
02305 
02306   // Explicitly destroy the valuetype adapter
02307   delete this->valuetype_adapter_;
02308   this->valuetype_adapter_ = 0;
02309 
02310   // Explicitly destroy the object reference table since it
02311   // contains references to objects, which themselves may contain
02312   // reference to this ORB.
02313   this->object_ref_table_.destroy ();
02314 
02315 #if (TAO_HAS_INTERCEPTORS == 1)
02316   CORBA::release (this->pi_current_);
02317   this->pi_current_ = CORBA::Object::_nil ();
02318 #endif  /* TAO_HAS_INTERCEPTORS == 1 */
02319 }

TAO_Stub_Factory * TAO_ORB_Core::stub_factory void   ) 
 

Returns a pointer to the Stub factory.

Definition at line 1648 of file ORB_Core.cpp.

References ACE_CString, ACE_TEXT_CHAR_TO_TCHAR, configuration(), TAO_ORB_Core_Static_Resources::instance(), stub_factory_, and TAO_ORB_Core_Static_Resources::stub_factory_name_.

Referenced by create_stub().

01649 {
01650   // Check if there is a cached reference.
01651   if (this->stub_factory_ != 0)
01652     return this->stub_factory_;
01653 
01654   // If not, look in the service repository for an instance.
01655   const ACE_CString &stub_factory_name =
01656     TAO_ORB_Core_Static_Resources::instance ()->stub_factory_name_;
01657 
01658   this->stub_factory_ =
01659     ACE_Dynamic_Service<TAO_Stub_Factory>::instance
01660       (this->configuration (),
01661        ACE_TEXT_CHAR_TO_TCHAR (stub_factory_name.c_str()));
01662 
01663   return this->stub_factory_;
01664 }

ACE_INLINE ACE_Thread_Manager * TAO_ORB_Core::thr_mgr void   ) 
 

Get the ACE_Thread_Manager.

Definition at line 180 of file ORB_Core.i.

Referenced by fini(), TAO_IIOP_Connector::open(), and shutdown().

00181 {
00182   return &this->tm_;
00183 }

TAO_Thread_Lane_Resources_Manager & TAO_ORB_Core::thread_lane_resources_manager void   ) 
 

Returns a pointer to the Thread Lane Resources Manager.

Definition at line 1546 of file ORB_Core.cpp.

References ACE_CString, ACE_TEXT_CHAR_TO_TCHAR, configuration(), TAO_Thread_Lane_Resources_Manager_Factory::create_thread_lane_resources_manager(), TAO_ORB_Core_Static_Resources::instance(), thread_lane_resources_manager_, and TAO_ORB_Core_Static_Resources::thread_lane_resources_manager_factory_name_.

Referenced by is_collocated(), lane_resources(), lf_strategy(), and shutdown().

01547 {
01548   // Check if there is a cached reference.
01549   if (this->thread_lane_resources_manager_ != 0)
01550     return *this->thread_lane_resources_manager_;
01551 
01552   // If not, lookup the corresponding factory and ask it to make one.
01553   const ACE_CString &thread_lane_resources_manager_factory_name =
01554     TAO_ORB_Core_Static_Resources::instance ()->thread_lane_resources_manager_factory_name_;
01555 
01556   TAO_Thread_Lane_Resources_Manager_Factory *factory =
01557     ACE_Dynamic_Service<TAO_Thread_Lane_Resources_Manager_Factory>::instance
01558       (this->configuration (),
01559        ACE_TEXT_CHAR_TO_TCHAR (thread_lane_resources_manager_factory_name.c_str()));
01560 
01561   this->thread_lane_resources_manager_ =
01562     factory->create_thread_lane_resources_manager (*this);
01563 
01564   return *this->thread_lane_resources_manager_;
01565 }

ACE_INLINE int TAO_ORB_Core::thread_per_connection_timeout ACE_Time_Value timeout  )  const
 

Returns the value used by the server threads to poll the shutdown flag. If the return value is zero then the server threads block forever.

Definition at line 360 of file ORB_Core.i.

Referenced by TAO_Connection_Handler::svc_i().

00361 {
00362   timeout = this->thread_per_connection_timeout_;
00363   return this->thread_per_connection_use_timeout_;
00364 }

ACE_Allocator * TAO_ORB_Core::transport_message_buffer_allocator void   ) 
 

This allocator is always global and has no locks. It is intended for allocating the buffers used to queue messages in transports.

Definition at line 2828 of file ORB_Core.cpp.

References lane_resources(), and TAO_Thread_Lane_Resources::transport_message_buffer_allocator().

02829 {
02830   return this->lane_resources ().transport_message_buffer_allocator ();
02831 }

ACE_INLINE TAO_Cleanup_Func_Registry * TAO_ORB_Core::tss_cleanup_funcs void   ) 
 

Return the underlying TSS cleanup function registry.

Definition at line 348 of file ORB_Core.i.

References tss_cleanup_funcs_.

00349 {
00350   return &(this->tss_cleanup_funcs_);
00351 }

const char * TAO_ORB_Core::typecodefactory_adapter_name void   )  [static]
 

Gets the value of TAO_ORB_Core::typecodefactory_adapter_name_.

Definition at line 1488 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::typecodefactory_adapter_name_.

void TAO_ORB_Core::typecodefactory_adapter_name const char *  name  )  [static]
 

Sets the value of TAO_ORB_Core::typecodefactory_adapter_name_.

Definition at line 1482 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::typecodefactory_adapter_name_.

ACE_INLINE CORBA::Boolean TAO_ORB_Core::use_global_collocation void   )  const
 

Definition at line 242 of file ORB_Core.i.

References use_global_collocation_.

00243 {
00244   return this->use_global_collocation_;
00245 }

ACE_INLINE void TAO_ORB_Core::use_global_collocation CORBA::Boolean  opt  ) 
 

Definition at line 236 of file ORB_Core.i.

References use_global_collocation_.

Referenced by is_collocation_enabled().

00237 {
00238   this->use_global_collocation_ = opt;
00239 }

ACE_INLINE CORBA::Boolean TAO_ORB_Core::use_implrepo void   ) 
 

Do we attempt to register with the Implementation Repository.

Definition at line 379 of file ORB_Core.i.

References use_implrepo_.

00380 {
00381   return use_implrepo_;
00382 }

TAO_Valuetype_Adapter * TAO_ORB_Core::valuetype_adapter void   ) 
 

Return the valuetype adapter.

Definition at line 3450 of file ORB_Core.cpp.

References ACE_ANY_EXCEPTION, ACE_CATCHANY, ACE_CHECK_RETURN, ACE_DECLARE_NEW_CORBA_ENV, ACE_ENDTRY, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_GUARD_RETURN, ACE_PRINT_EXCEPTION, ACE_THROW_RETURN, ACE_TRY, ACE_TRY_CHECK, TAO_Valuetype_Adapter_Factory::create(), ACE_Dynamic_Service< TYPE >::instance(), TAO_SYNCH_MUTEX, valuetype_adapter_, and valuetype_adapter_factory_name().

Referenced by CORBA::ORB::lookup_value_factory(), CORBA::ORB::register_value_factory(), and CORBA::ORB::unregister_value_factory().

03451 {
03452   if (this->valuetype_adapter_ == 0)
03453     {
03454       ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
03455                         ace_mon,
03456                         this->lock_,
03457                         0);
03458 
03459       if (this->valuetype_adapter_ == 0)
03460         {
03461           ACE_DECLARE_NEW_CORBA_ENV;
03462           ACE_TRY
03463             {
03464               TAO_Valuetype_Adapter_Factory * vt_ap_factory =
03465                 ACE_Dynamic_Service<TAO_Valuetype_Adapter_Factory>::instance (
03466                     TAO_ORB_Core::valuetype_adapter_factory_name ()
03467                   );
03468 
03469               if (vt_ap_factory)
03470                 {
03471                   this->valuetype_adapter_ =
03472                     vt_ap_factory->create (ACE_ENV_SINGLE_ARG_PARAMETER);
03473                   ACE_TRY_CHECK;
03474                 }
03475             }
03476           ACE_CATCHANY
03477             {
03478               ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
03479                                    "Cannot initialize the "
03480                                    "valuetype_adapter \n");
03481             }
03482           ACE_ENDTRY;
03483           ACE_CHECK_RETURN(0);
03484         }
03485 
03486       if (this->valuetype_adapter_ == 0)
03487         {
03488            ACE_THROW_RETURN (CORBA::INTERNAL (),
03489                              0);
03490         }
03491     }
03492 
03493   return this->valuetype_adapter_;
03494 }

const char * TAO_ORB_Core::valuetype_adapter_factory_name void   )  [static]
 

Gets the value of TAO_ORB_Core::valuetype_adapter_factory_name.

Definition at line 1512 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::valuetype_adapter_factory_name_.

void TAO_ORB_Core::valuetype_adapter_factory_name const char *  name  )  [static]
 

Sets the value of TAO_ORB_Core::valuetype_adapter_factory_name.

Definition at line 1506 of file ORB_Core.cpp.

References TAO_ORB_Core_Static_Resources::instance(), and TAO_ORB_Core_Static_Resources::valuetype_adapter_factory_name_.

Referenced by valuetype_adapter().


Friends And Related Function Documentation

CORBA::ORB_ptr CORBA::ORB_init int &  ,
char *  argv[],
const char *  ,
CORBA::Environment
[friend]
 

friend class TAO_ORB_Core_Auto_Ptr [friend]
 

Definition at line 160 of file ORB_Core.h.


Member Data Documentation

TAO_Adapter_Registry TAO_ORB_Core::adapter_registry_ [protected]
 

The list of Adapters used in this ORB.

Definition at line 1167 of file ORB_Core.h.

Referenced by adapter_registry(), poa_adapter(), resolve_ior_table_i(), root_poa(), and shutdown().

TAO_BiDir_Adapter* TAO_ORB_Core::bidir_adapter_ [protected]
 

BiDirectional GIOP factory.

Definition at line 1256 of file ORB_Core.h.

Referenced by load_policy_validators().

CORBA::Boolean TAO_ORB_Core::bidir_giop_policy_ [protected]
 

Bir Dir GIOP policy value.

Definition at line 1259 of file ORB_Core.h.

Referenced by bidir_giop_policy().

TAO_Client_Strategy_Factory* TAO_ORB_Core::client_factory_ [protected]
 

Handle to the factory for Client-side strategies.

Definition at line 1118 of file ORB_Core.h.

Referenced by client_factory().

TAO::ClientRequestInterceptor_Adapter* TAO_ORB_Core::client_request_interceptor_adapter_ [protected]
 

The adapter for handling client request interceptors.

Definition at line 1239 of file ORB_Core.h.

Referenced by add_interceptor(), clientrequestinterceptor_adapter(), clientrequestinterceptor_adapter_i(), and destroy_interceptors().

CORBA::Object_ptr TAO_ORB_Core::codec_factory_ [protected]
 

The cached IOR for the CodecFactory DLL.

Definition at line 1062 of file ORB_Core.h.

Referenced by fini(), and resolve_codecfactory_i().

TAO_Codeset_Manager* TAO_ORB_Core::codeset_manager_ [protected]
 

Code Set Manager - points to service object in the service repo.

Definition at line 1265 of file ORB_Core.h.

TAO_Collocation_Resolver* TAO_ORB_Core::collocation_resolver_ [protected]
 

Definition at line 1042 of file ORB_Core.h.

Referenced by collocation_resolver().

CORBA::ULong TAO_ORB_Core::collocation_strategy_ [protected]
 

Default collocation policy. This should never be ORB_CONTROL.

Definition at line 1142 of file ORB_Core.h.

Referenced by get_collocation_strategy().

ACE_Service_Gestalt* TAO_ORB_Core::config_ [protected]
 

ORB's service configuration.

Definition at line 1268 of file ORB_Core.h.

ACE_Lock_Adapter<TAO_SYNCH_MUTEX> TAO_ORB_Core::data_block_lock_ [protected]
 

The data block reference counts are locked using this mutex.

Definition at line 1176 of file ORB_Core.h.

Referenced by create_input_cdr_data_block(), and locking_strategy().

TAO_Policy_Set* TAO_ORB_Core::default_policies_ [protected]
 

The default policies.

Definition at line 1151 of file ORB_Core.h.

Referenced by get_default_policies(), and ~TAO_ORB_Core().

TAO::Transport_Queueing_Strategy* TAO_ORB_Core::default_transport_queueing_strategy_ [protected]
 

This strategy will not queue by default and not flush.

Definition at line 1217 of file ORB_Core.h.

Referenced by default_transport_queueing_strategy(), and ~TAO_ORB_Core().

TAO::Transport_Queueing_Strategy* TAO_ORB_Core::delayed_transport_queueing_strategy_ [protected]
 

This strategy will buffer messages.

Definition at line 1208 of file ORB_Core.h.

Referenced by delayed_transport_queueing_strategy(), and ~TAO_ORB_Core().

CORBA::Object_ptr TAO_ORB_Core::dynany_factory_ [protected]
 

The cached object reference for the DynAnyFactory.

Definition at line 1065 of file ORB_Core.h.

Referenced by fini(), and resolve_dynanyfactory_i().

TAO::Transport_Queueing_Strategy* TAO_ORB_Core::eager_transport_queueing_strategy_ [protected]
 

This strategy will buffer messages.

Definition at line 1205 of file ORB_Core.h.

Referenced by eager_transport_queueing_strategy(), and ~TAO_ORB_Core().

TAO_Endpoint_Selector_Factory* TAO_ORB_Core::endpoint_selector_factory_ [protected]
 

Definition at line 1200 of file ORB_Core.h.

Referenced by endpoint_selector_factory().

TAO::Transport_Queueing_Strategy* TAO_ORB_Core::flush_transport_queueing_strategy_ [protected]
 

This strategy will not queue by default, but will flush the queue each time

Definition at line 1212 of file ORB_Core.h.

Referenced by flush_transport_queueing_strategy(), and ~TAO_ORB_Core().

TAO_Flushing_Strategy* TAO_ORB_Core::flushing_strategy_ [protected]
 

Hold the flushing strategy.

Definition at line 1262 of file ORB_Core.h.

Referenced by flushing_strategy(), and ~TAO_ORB_Core().

TAO_Fault_Tolerance_Service TAO_ORB_Core::ft_service_ [protected]
 

Fault Tolerant service hook.

Definition at line 1129 of file ORB_Core.h.

Referenced by fault_tolerance_service(), hash_service(), is_profile_equivalent(), object_is_nil(), reset_service_profile_flags(), service_profile_reselection(), service_profile_selection(), service_raise_comm_failure(), service_raise_transient_failure(), and services_callbacks_init().

int TAO_ORB_Core::has_shutdown_ [protected]
 

Flag which denotes that the ORB has been shutdown.

Definition at line 1186 of file ORB_Core.h.

Referenced by has_shutdown(), and shutdown().

CORBA::Object_ptr TAO_ORB_Core::implrepo_service_ [protected]
 

The cached IOR for the Implementation Repository.

Definition at line 1050 of file ORB_Core.h.

Referenced by fini(), and implrepo_service().

int TAO_ORB_Core::imr_endpoints_in_ior_ [protected]
 

Flag for whether to put the ImR endpoints into our object refs.

Definition at line 1056 of file ORB_Core.h.

Referenced by imr_endpoints_in_ior().

InitRefMap TAO_ORB_Core::init_ref_map_ [protected]
 

Return InitRefMap to find if a particular object id is present.

Definition at line 1098 of file ORB_Core.h.

Referenced by init_ref_map(), and list_initial_references().

TAO_IORInterceptor_Adapter* TAO_ORB_Core::ior_interceptor_adapter_ [protected]
 

IORInterceptor adapter.

Definition at line 1247 of file ORB_Core.h.

Referenced by add_interceptor(), destroy_interceptors(), and ior_interceptor_adapter().

CORBA::Object_ptr TAO_ORB_Core::ior_manip_factory_ [protected]
 

The cached object reference for the IORManipulataion.

Definition at line 1068 of file ORB_Core.h.

Referenced by fini(), and resolve_iormanipulation_i().

CORBA::Object_ptr TAO_ORB_Core::ior_table_ [protected]
 

The cached object reference for the IORTable.

Definition at line 1071 of file ORB_Core.h.

Referenced by fini(), and resolve_ior_table_i().

TAO_SYNCH_MUTEX TAO_ORB_Core::lock_ [protected]
 

Synchronize internal state...

Definition at line 1038 of file ORB_Core.h.

TAO::ObjectKey_Table TAO_ORB_Core::object_key_table_ [protected]
 

Table that stores the object key instead of caching one per-profile.

Definition at line 1106 of file ORB_Core.h.

Referenced by fini(), and object_key_table().

TAO_Object_Ref_Table TAO_ORB_Core::object_ref_table_ [protected]
 

Table that maps object key/name to (de-stringified) object reference. It is needed for supporting local objects in the resolve_initial_references() mechanism.

Definition at line 1103 of file ORB_Core.h.

Referenced by list_initial_references(), object_ref_table(), and shutdown().

int TAO_ORB_Core::open_called_ [protected]
 

Flag which denotes that the open method was called.

Definition at line 1198 of file ORB_Core.h.

TAO_SYNCH_MUTEX TAO_ORB_Core::open_lock_ [protected]
 

Mutual exclusion for calling open.

Definition at line 1195 of file ORB_Core.h.

CORBA::Boolean TAO_ORB_Core::opt_for_collocation_ [protected]
 

TRUE if we want to take advantage of collocation optimization in this ORB.

Definition at line 1135 of file ORB_Core.h.

Referenced by optimize_collocation_objects().

CORBA::ORB_ptr TAO_ORB_Core::orb_ [protected]
 

Note:
Should we keep a single ORB pointer? This is good because multiple calls to ORB_init() with the same ORBid can use the same object, but maybe don't want so much coupling.
Pointer to the ORB.

Definition at line 1087 of file ORB_Core.h.

Referenced by implrepo_service(), orb(), and ~TAO_ORB_Core().

TAO_ORB_Parameters TAO_ORB_Core::orb_params_ [protected]
 

Parameters used by the ORB.

Definition at line 1095 of file ORB_Core.h.

Referenced by orb_params().

char* TAO_ORB_Core::orbid_ [protected]
 

The ORBid for this ORB.

Definition at line 1109 of file ORB_Core.h.

Referenced by fini(), and orbid().

TAO::ORBInitializer_Registry_Adapter* TAO_ORB_Core::orbinitializer_registry_ [protected]
 

Registry containing all orb initializers.

Definition at line 1226 of file ORB_Core.h.

Referenced by orbinitializer_registry(), orbinitializer_registry_i(), and ~TAO_ORB_Core().

TAO_Parser_Registry TAO_ORB_Core::parser_registry_ [protected]
 

The IOR parser registry.

Definition at line 1253 of file ORB_Core.h.

Referenced by parser_registry().

CORBA::Object_ptr TAO_ORB_Core::pi_current_ [protected]
 

Cached pointer/reference to the PICurrent object.

A pointer/reference to the PICurrent object is cached in the ORB Core since it is accessed in the critical path (i.e. the request invocation path). Caching it prevents additional overhead to due object resolution from occurring.

Definition at line 1236 of file ORB_Core.h.

Referenced by pi_current(), resolve_picurrent_i(), and shutdown().

TAO_Adapter* TAO_ORB_Core::poa_adapter_ [protected]
 

An optimization for the POA.

Definition at line 1170 of file ORB_Core.h.

Referenced by poa_adapter().

CORBA::Object_var TAO_ORB_Core::poa_current_ [protected]
 

POA current.

Definition at line 1164 of file ORB_Core.h.

Referenced by resolve_poa_current_i().

TAO_Policy_Current* TAO_ORB_Core::policy_current_ [protected]
 

Policy current.

Definition at line 1154 of file ORB_Core.h.

Referenced by policy_current(), and ~TAO_ORB_Core().

TAO::PolicyFactory_Registry_Adapter* TAO_ORB_Core::policy_factory_registry_ [protected]
 

Registry containing all registered policy factories.

Definition at line 1223 of file ORB_Core.h.

Referenced by policy_factory_registry(), policy_factory_registry_i(), and ~TAO_ORB_Core().

TAO_Policy_Manager* TAO_ORB_Core::policy_manager_ [protected]
 

The Policy_Manager for this ORB.

Definition at line 1148 of file ORB_Core.h.

Referenced by policy_manager(), and ~TAO_ORB_Core().

TAO_ProtocolFactorySet* TAO_ORB_Core::protocol_factories_ [protected]
 

Definition at line 1046 of file ORB_Core.h.

TAO_Protocols_Hooks* TAO_ORB_Core::protocols_hooks_
 

Handle to the factory for protocols_hooks_..

Definition at line 559 of file ORB_Core.h.

Referenced by get_protocols_hooks(), and service_context_list().

CORBA::ULong TAO_ORB_Core::refcount_ [protected]
 

Number of outstanding references to this object.

Definition at line 1220 of file ORB_Core.h.

TAO_Request_Dispatcher* TAO_ORB_Core::request_dispatcher_ [protected]
 

The request dispatching strategy.

Definition at line 1159 of file ORB_Core.h.

Referenced by request_dispatcher(), and ~TAO_ORB_Core().

TAO_Resource_Factory* TAO_ORB_Core::resource_factory_ [protected]
 

Handle to the factory for resource information..

Definition at line 1112 of file ORB_Core.h.

Referenced by resource_factory().

CORBA::Object_var TAO_ORB_Core::root_poa_ [protected]
 

Object reference to the root POA. It will eventually be the object reference returned by calls to CORBA::ORB::resolve_initial_references ("RootPOA").

Definition at line 1092 of file ORB_Core.h.

Referenced by root_poa().

CORBA::Object_var TAO_ORB_Core::rt_current_ [protected]
 

The cached object reference for the RTCORBA::Current interface.

Definition at line 1077 of file ORB_Core.h.

CORBA::Object_var TAO_ORB_Core::rt_orb_ [protected]
 

The cached object reference for the RTCORBA::RTORB.

Definition at line 1074 of file ORB_Core.h.

Referenced by resolve_rt_orb().

TAO_Server_Strategy_Factory* TAO_ORB_Core::server_factory_ [protected]
 

Handle to the factory for Server-side strategies.

Definition at line 1121 of file ORB_Core.h.

Referenced by run(), and server_factory().

ACE_CString TAO_ORB_Core::server_id_ [protected]
 

The server_id_ that was passed via -ORBServerId option.

Definition at line 1115 of file ORB_Core.h.

Referenced by server_id().

TAO::ServerRequestInterceptor_Adapter* TAO_ORB_Core::server_request_interceptor_adapter_ [protected]
 

The adapter for handling server request interceptors.

Definition at line 1242 of file ORB_Core.h.

Referenced by add_interceptor(), destroy_interceptors(), serverrequestinterceptor_adapter(), and serverrequestinterceptor_adapter_i().

TAO_Stub_Factory* TAO_ORB_Core::stub_factory_ [protected]
 

Definition at line 1044 of file ORB_Core.h.

Referenced by stub_factory().

TAO_Thread_Lane_Resources_Manager* TAO_ORB_Core::thread_lane_resources_manager_ [protected]
 

Definition at line 1040 of file ORB_Core.h.

Referenced by fini(), thread_lane_resources_manager(), and ~TAO_ORB_Core().

ACE_Time_Value TAO_ORB_Core::thread_per_connection_timeout_ [protected]
 

Definition at line 1191 of file ORB_Core.h.

int TAO_ORB_Core::thread_per_connection_use_timeout_ [protected]
 

Definition at line 1190 of file ORB_Core.h.

ACE_Thread_Manager TAO_ORB_Core::tm_ [protected]
 

The Thread Manager.

Definition at line 1173 of file ORB_Core.h.

TAO_Cleanup_Func_Registry TAO_ORB_Core::tss_cleanup_funcs_ [protected]
 

TSS Object cleanup functions. These correspond to the TSS objects stored in TAO's TSS resources.

Definition at line 1180 of file ORB_Core.h.

Referenced by add_tss_cleanup_func(), set_tss_resource(), and tss_cleanup_funcs().

CORBA::Object_ptr TAO_ORB_Core::typecode_factory_ [protected]
 

The cached IOR for the TypeCodeFactory DLL.

Definition at line 1059 of file ORB_Core.h.

Referenced by fini(), and resolve_typecodefactory_i().

CORBA::Boolean TAO_ORB_Core::use_global_collocation_ [protected]
 

TRUE if we want to consider all ORBs in this address space collocated.

Definition at line 1139 of file ORB_Core.h.

Referenced by use_global_collocation().

int TAO_ORB_Core::use_implrepo_ [protected]
 

Flag for whether the implrepo support is enabled or not.

Definition at line 1053 of file ORB_Core.h.

Referenced by implrepo_service(), and use_implrepo().

bool TAO_ORB_Core::use_local_memory_pool_ [private]
 

Definition at line 1033 of file ORB_Core.h.

TAO_Valuetype_Adapter* TAO_ORB_Core::valuetype_adapter_ [protected]
 

Pointer to the valuetype adapter.

Definition at line 1250 of file ORB_Core.h.

Referenced by shutdown(), and valuetype_adapter().


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 12:22:45 2006 for TAO by doxygen 1.3.6