diff options
Diffstat (limited to 'TAO/orbsvcs/ImplRepo_Service/Locator_NT_Service.cpp')
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/Locator_NT_Service.cpp | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/TAO/orbsvcs/ImplRepo_Service/Locator_NT_Service.cpp b/TAO/orbsvcs/ImplRepo_Service/Locator_NT_Service.cpp index 4fb3d110445..23ffa674a22 100644 --- a/TAO/orbsvcs/ImplRepo_Service/Locator_NT_Service.cpp +++ b/TAO/orbsvcs/ImplRepo_Service/Locator_NT_Service.cpp @@ -16,9 +16,10 @@ #if defined (ACE_WIN32) #include "ImR_Locator_i.h" +#include "Locator_Options.h" #include "tao/ORB_Core.h" -//#include "tao/corba.h" +#include "tao/corba.h" #include "ace/Reactor.h" /** @@ -59,19 +60,39 @@ int Locator_NT_Service::svc (void) { ImR_Locator_i server; + Options opts; + + if (opts.init_from_registry() != 0) + { + report_status (SERVICE_STOPPED); + return -1; + } ACE_DECLARE_NEW_CORBA_ENV; ACE_TRY { - report_status (SERVICE_RUNNING); - int status = server.init (ACE_ENV_SINGLE_ARG_PARAMETER); + int status = server.init (opts ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - report_status (SERVICE_STOPPED); - if (status != -1) + if (status == -1) + { + report_status (SERVICE_STOPPED); + return -1; + } + else { - return 0; + report_status (SERVICE_RUNNING); + server.run (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + status = server.fini (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + report_status (SERVICE_STOPPED); + } + if (status != -1) + return 0; } ACE_CATCH (CORBA::SystemException, sysex) { |