summaryrefslogtreecommitdiff
path: root/cpp/demo/Ice/session/Server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/demo/Ice/session/Server.cpp')
-rw-r--r--cpp/demo/Ice/session/Server.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/cpp/demo/Ice/session/Server.cpp b/cpp/demo/Ice/session/Server.cpp
index 48fbd2c3dc7..d9551e7ddfc 100644
--- a/cpp/demo/Ice/session/Server.cpp
+++ b/cpp/demo/Ice/session/Server.cpp
@@ -9,6 +9,7 @@
#include <Ice/Ice.h>
#include <SessionFactoryI.h>
+#include <ReapThread.h>
using namespace std;
using namespace Demo;
@@ -17,11 +18,15 @@ int
run(int argc, char* argv[], const Ice::CommunicatorPtr& communicator)
{
Ice::ObjectAdapterPtr adapter = communicator->createObjectAdapter("SessionFactory");
- SessionFactoryIPtr factory = new SessionFactoryI(adapter);
- adapter->add(factory, Ice::stringToIdentity("SessionFactory"));
+ ReapThreadPtr reaper = new ReapThread(IceUtil::Time::seconds(10));
+ adapter->add(new SessionFactoryI(reaper), Ice::stringToIdentity("SessionFactory"));
adapter->activate();
+ reaper->start();
communicator->waitForShutdown();
- factory->destroy();
+
+ reaper->terminate();
+ reaper->getThreadControl().join();
+
return EXIT_SUCCESS;
}