ORB_Core.cpp File Reference

#include "tao/ORB_Core.h"
#include "tao/ORB_Core_TSS_Resources.h"
#include "tao/ORB_Table.h"
#include "tao/TAO_Internal.h"
#include "tao/default_server.h"
#include "tao/Profile.h"
#include "tao/Stub.h"
#include "tao/LF_Follower.h"
#include "tao/Leader_Follower.h"
#include "tao/LF_Event_Loop_Thread_Helper.h"
#include "tao/Connector_Registry.h"
#include "tao/Transport_Queueing_Strategies.h"
#include "tao/Object_Loader.h"
#include "tao/ObjectIdListC.h"
#include "tao/BiDir_Adapter.h"
#include "tao/Collocation_Resolver.h"
#include "tao/Flushing_Strategy.h"
#include "tao/Request_Dispatcher.h"
#include "tao/Stub_Factory.h"
#include "tao/Thread_Lane_Resources.h"
#include "tao/Thread_Lane_Resources_Manager.h"
#include "tao/TSS_Resources.h"
#include "tao/Protocols_Hooks.h"
#include "tao/IORInterceptor_Adapter.h"
#include "tao/IORInterceptor_Adapter_Factory.h"
#include "tao/debug.h"
#include "tao/TAOC.h"
#include "tao/Endpoint_Selector_Factory.h"
#include "tao/Client_Strategy_Factory.h"
#include "tao/Adapter_Factory.h"
#include "tao/Adapter.h"
#include "tao/GUIResource_Factory.h"
#include "tao/PolicyFactory_Registry_Adapter.h"
#include "tao/PolicyFactory_Registry_Factory.h"
#include "tao/ORBInitializer_Registry_Adapter.h"
#include "tao/Codeset_Manager.h"
#include "tao/GIOP_Fragmentation_Strategy.h"
#include "tao/Valuetype_Adapter.h"
#include "tao/Valuetype_Adapter_Factory.h"
#include "tao/Policy_Manager.h"
#include "tao/Policy_Current.h"
#include "ace/Reactor.h"
#include "ace/Dynamic_Service.h"
#include "ace/Arg_Shifter.h"
#include "ace/Argv_Type_Converter.h"
#include "ace/Static_Object_Lock.h"
#include "ace/streams.h"
#include "ace/OS_NS_strings.h"
#include "ace/OS_NS_string.h"
#include "ace/Message_Block.h"
#include "tao/ClientRequestInterceptor_Adapter.h"
#include "tao/ClientRequestInterceptor_Adapter_Factory.h"
#include "tao/ServerRequestInterceptor_Adapter.h"
#include "tao/ServerRequestInterceptor_Adapter_Factory.h"

Include dependency graph for ORB_Core.cpp:

Include dependency graph

Go to the source code of this file.

Defines

#define TOCSRi   TAO_ORB_Core_Static_Resources::instance ()

Functions

 ACE_STATIC_SVC_DEFINE (TAO_ORB_Core_Static_Resources, ACE_TEXT("TAO_ORB_Core_Static_Resources"), ACE_SVC_OBJ_T,&ACE_SVC_NAME(TAO_ORB_Core_Static_Resources), ACE_Service_Type::DELETE_THIS|ACE_Service_Type::DELETE_OBJ, 0) TAO_BEGIN_VERSIONED_NAMESPACE_DECL CORBA
TAO_Export TAO_ORB_CoreTAO_ORB_Core_instance (void)


Define Documentation

#define TOCSRi   TAO_ORB_Core_Static_Resources::instance ()
 

Referenced by TAO_ORB_Core::connection_timeout_hook().


Function Documentation

ACE_STATIC_SVC_DEFINE TAO_ORB_Core_Static_Resources  ,
ACE_TEXT("TAO_ORB_Core_Static_Resources")  ,
ACE_SVC_OBJ_T  ,
ACE_SVC_NAME(TAO_ORB_Core_Static_Resources),
ACE_Service_Type::DELETE_THIS|ACE_Service_Type::DELETE_OBJ  ,
 

Definition at line 82 of file ORB_Core.cpp.

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

00096 {
00097   return *TAO_TSS_Resources::instance ()->default_environment_;
00098 }

TAO_Export TAO_ORB_Core* TAO_ORB_Core_instance void   ) 
 

Obtain an instance of the first ORB core registered in the ORB table.

Definition at line 3499 of file ORB_Core.cpp.

References ACE_CATCHANY, ACE_DECLARE_NEW_CORBA_ENV, ACE_ENDTRY, ACE_ENV_ARG_PARAMETER, ACE_GUARD_RETURN, ACE_TRY, ACE_TRY_CHECK, TAO::ORB_Table::first_orb(), TAO::ORB_Table::instance(), CORBA::ORB_init(), CORBA::ORB_var, and TAO_SYNCH_RECURSIVE_MUTEX.

Referenced by TAO_Connector_Registry::create_profile(), CORBA::Environment::default_environment(), operator>>(), CORBA::Object::tao_object_initialize(), TAO_Stub::TAO_Stub(), and CORBA::Environment::~Environment().

03500 {
03501   // @@ This is a slight violation of layering, we should use
03502   //    TAO_ORB_Core_instance(), but that breaks during startup.
03503   TAO::ORB_Table * const orb_table = TAO::ORB_Table::instance ();
03504   if (orb_table->first_orb () == 0)
03505     {
03506       ACE_MT (ACE_GUARD_RETURN (TAO_SYNCH_RECURSIVE_MUTEX, guard,
03507                                 *ACE_Static_Object_Lock::instance (), 0));
03508 
03509       if (orb_table->first_orb () == 0)
03510         {
03511           // Calling CORBA::ORB_init() returns a duplicated ORB
03512           // reference, so make sure that reference is stored in an
03513           // ORB_var so that no leak occurs.  The duplicate ORB
03514           // reference isn't needed outside the scope of this function
03515           // since the corresponding ORB Core instance will still
03516           // exist in the ORB table after the ORB reference is
03517           // destroyed.
03518 
03519           ACE_DECLARE_NEW_CORBA_ENV;
03520           ACE_TRY
03521             {
03522               int argc = 0;
03523               CORBA::ORB_var orb =
03524                 CORBA::ORB_init (argc, 0, 0 ACE_ENV_ARG_PARAMETER);
03525               ACE_TRY_CHECK;
03526             }
03527           ACE_CATCHANY
03528             {
03529               // @@ What should we do here?
03530             }
03531           ACE_ENDTRY;
03532         }
03533     }
03534 
03535   return orb_table->first_orb ();
03536 }


Generated on Thu Nov 9 12:03:49 2006 for TAO by doxygen 1.3.6