summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Service.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Service.cpp')
-rwxr-xr-xcpp/src/Ice/Service.cpp36
1 files changed, 20 insertions, 16 deletions
diff --git a/cpp/src/Ice/Service.cpp b/cpp/src/Ice/Service.cpp
index 80bd46c13ff..8ce7fe991ac 100755
--- a/cpp/src/Ice/Service.cpp
+++ b/cpp/src/Ice/Service.cpp
@@ -12,6 +12,7 @@
#include <IceUtil/Thread.h>
#include <IceUtil/Monitor.h>
#include <IceUtil/Mutex.h>
+#include <IceUtil/ArgVector.h>
#include <Ice/Service.h>
#include <Ice/Initialize.h>
#include <Ice/Communicator.h>
@@ -484,6 +485,15 @@ Ice::Service::main(int& argc, char* argv[], const InitializationData& initData)
return run(argc, argv, initData);
}
+int
+Ice::Service::main(StringSeq& args, const InitializationData& initData)
+{
+ IceUtil::ArgVector av(args);
+ int rc = main(av.argc, av.argv);
+ argsToStringSeq(av.argc, av.argv);
+ return rc;
+}
+
Ice::CommunicatorPtr
Ice::Service::communicator() const
{
@@ -613,15 +623,12 @@ Ice::Service::run(int& argc, char* argv[], const InitializationData& initData)
error("service caught unhandled C++ exception");
}
- if(_communicator)
+ try
+ {
+ _communicator->destroy();
+ }
+ catch(...)
{
- try
- {
- _communicator->destroy();
- }
- catch(...)
- {
- }
}
return status;
@@ -1843,15 +1850,12 @@ Ice::Service::runDaemon(int argc, char* argv[], const InitializationData& initDa
close(fds[1]);
}
- if(_communicator)
+ try
+ {
+ _communicator->destroy();
+ }
+ catch(...)
{
- try
- {
- _communicator->destroy();
- }
- catch(...)
- {
- }
}
return status;