00001
00002
00003
00004 #include "tao/PI_Server/PI_Server_Loader.h"
00005 #include "tao/PI_Server/PortableServer_ORBInitializer.h"
00006
00007 #include "tao/debug.h"
00008 #include "tao/ORB_Core.h"
00009 #include "tao/ORBInitializer_Registry.h"
00010
00011 ACE_RCSID (PI_Server,
00012 PI_Server_Loader,
00013 "PI_Server_Loader.cpp,v 1.5 2006/03/10 07:19:12 jtc Exp")
00014
00015 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00016
00017 TAO_PI_Server_Loader::TAO_PI_Server_Loader (void)
00018 {
00019 }
00020
00021 TAO_PI_Server_Loader::~TAO_PI_Server_Loader (void)
00022 {
00023
00024 }
00025
00026 int
00027 TAO_PI_Server_Loader::init (int,
00028 ACE_TCHAR* [])
00029 {
00030 ACE_TRACE ("TAO_PI_Server_Loader::init");
00031
00032 static bool initialized = false;
00033
00034
00035 if (initialized)
00036 return 0;
00037
00038 initialized = true;
00039
00040
00041 ACE_DECLARE_NEW_CORBA_ENV;
00042 ACE_TRY
00043 {
00044
00045 PortableInterceptor::ORBInitializer_ptr temp_orb_initializer =
00046 PortableInterceptor::ORBInitializer::_nil ();
00047
00048 ACE_NEW_THROW_EX (temp_orb_initializer,
00049 TAO_PortableServer_ORBInitializer,
00050 CORBA::NO_MEMORY (
00051 CORBA::SystemException::_tao_minor_code (
00052 TAO::VMCID,
00053 ENOMEM),
00054 CORBA::COMPLETED_NO));
00055 ACE_TRY_CHECK;
00056
00057 PortableInterceptor::ORBInitializer_var orb_initializer =
00058 temp_orb_initializer;
00059
00060 PortableInterceptor::register_orb_initializer (orb_initializer.in ()
00061 ACE_ENV_ARG_PARAMETER);
00062 ACE_TRY_CHECK;
00063 }
00064 ACE_CATCHANY
00065 {
00066 ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
00067 "Caught exception:");
00068 return -1;
00069 }
00070 ACE_ENDTRY;
00071 ACE_CHECK_RETURN (-1);
00072
00073 return 0;
00074 }
00075
00076 TAO_END_VERSIONED_NAMESPACE_DECL
00077
00078
00079
00080 ACE_FACTORY_DEFINE (TAO_PI_Server, TAO_PI_Server_Loader)
00081 ACE_STATIC_SVC_DEFINE (TAO_PI_Server_Loader,
00082 ACE_TEXT ("PI_Server_Loader"),
00083 ACE_SVC_OBJ_T,
00084 &ACE_SVC_NAME (TAO_PI_Server_Loader),
00085 ACE_Service_Type::DELETE_THIS
00086 | ACE_Service_Type::DELETE_OBJ,
00087 0)