From bc6cdac7eda5e31c8fab6e891a7dc2078a7d22c6 Mon Sep 17 00:00:00 2001 From: Matthew Newhook Date: Thu, 6 Mar 2008 14:26:07 +0800 Subject: Squashed commit of the following: commit c2f83d9a3e0e1f97e76f33d7992ef8e3e2994d91 Author: Matthew Newhook Date: Thu Mar 6 14:22:52 2008 +0800 Cleanup some IceGrid configuration files. commit 4e33903c9ae238b9e317fc3f1f3e281c816374dd Author: Matthew Newhook Date: Thu Mar 6 14:17:10 2008 +0800 remove ttl setting. commit c418b308ff7cc8e8a4296819938b88dfedc16a97 Author: Matthew Newhook Date: Thu Mar 6 14:16:32 2008 +0800 remove useless PopulateEmptyIndices config. commit da70d3936f921aa2c92bd2db7b1fcddb4467a9bd Author: Matthew Newhook Date: Thu Mar 6 13:59:51 2008 +0800 - Removed interrupt handlers for interactive C++ demos. - Lots of cleanups to demos. --- cpp/demo/IceGrid/sessionActivation/Client.cpp | 82 +++++++-------------------- 1 file changed, 22 insertions(+), 60 deletions(-) (limited to 'cpp/demo/IceGrid/sessionActivation/Client.cpp') diff --git a/cpp/demo/IceGrid/sessionActivation/Client.cpp b/cpp/demo/IceGrid/sessionActivation/Client.cpp index 0592df04ccd..fe3648d795a 100644 --- a/cpp/demo/IceGrid/sessionActivation/Client.cpp +++ b/cpp/demo/IceGrid/sessionActivation/Client.cpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include using namespace std; @@ -69,18 +69,14 @@ class HelloClient : public Ice::Application { public: + HelloClient(); virtual int run(int, char*[]); - virtual void interruptCallback(int); private: void cleanup(); void menu(); string trim(const string&); - - IceUtil::Mutex _mutex; - IceGrid::SessionPrx _session; - SessionKeepAliveThreadPtr _keepAlive; }; int @@ -90,6 +86,15 @@ main(int argc, char* argv[]) return app.main(argc, argv, "config.client"); } +HelloClient::HelloClient() : + // + // Since this is an interactive demo we don't want any signal + // handling. + // + Application(Ice::NoSignalHandling) +{ +} + int HelloClient::run(int argc, char* argv[]) { @@ -101,12 +106,6 @@ HelloClient::run(int argc, char* argv[]) int status = EXIT_SUCCESS; - // - // Since this is an interactive demo we want the custom interrupt - // callback to be called when the process is interrupted. - // - callbackOnInterrupt(); - IceGrid::RegistryPrx registry = IceGrid::RegistryPrx::checkedCast(communicator()->stringToProxy("DemoIceGrid/Registry")); if(!registry) @@ -115,6 +114,7 @@ HelloClient::run(int argc, char* argv[]) return EXIT_FAILURE; } + IceGrid::SessionPrx session; while(true) { cout << "This demo accepts any user-id / password combination.\n"; @@ -131,8 +131,7 @@ HelloClient::run(int argc, char* argv[]) try { - IceUtil::Mutex::Lock sync(_mutex); - _session = registry->createSession(id, password); + session = registry->createSession(id, password); break; } catch(const IceGrid::PermissionDeniedException& ex) @@ -141,15 +140,12 @@ HelloClient::run(int argc, char* argv[]) } } - { - IceUtil::Mutex::Lock sync(_mutex); - _keepAlive = new SessionKeepAliveThread(_session, registry->getSessionTimeout() / 2); - _keepAlive->start(); - } + SessionKeepAliveThreadPtr keepAlive = new SessionKeepAliveThread(session, registry->getSessionTimeout() / 2); + keepAlive->start(); try { - HelloPrx hello = HelloPrx::checkedCast(_session->allocateObjectById(communicator()->stringToIdentity("hello"))); + HelloPrx hello = HelloPrx::checkedCast(session->allocateObjectById(communicator()->stringToIdentity("hello"))); menu(); @@ -206,51 +202,17 @@ HelloClient::run(int argc, char* argv[]) status = EXIT_FAILURE; } - cleanup(); - - return status; -} - -void -HelloClient::interruptCallback(int) -{ - cleanup(); - - try - { - communicator()->destroy(); - } - catch(const IceUtil::Exception& ex) - { - cerr << appName() << ": " << ex << endl; - } - catch(...) - { - cerr << appName() << ": unknown exception" << endl; - } - exit(EXIT_SUCCESS); -} - -void -HelloClient::cleanup() -{ - IceUtil::Mutex::Lock sync(_mutex); // // Destroy the keepAlive thread and the sesion object otherwise // the session will be kept allocated until the timeout occurs. // Destroying the session will release all allocated objects. // - if(_keepAlive) - { - _keepAlive->destroy(); - _keepAlive->getThreadControl().join(); - _keepAlive = 0; - } - if(_session) - { - _session->destroy(); - _session = 0; - } + keepAlive->destroy(); + keepAlive->getThreadControl().join(); + + session->destroy(); + + return status; } void -- cgit v1.2.3