diff options
author | Matthew Newhook <matthew@zeroc.com> | 2008-03-06 14:26:07 +0800 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2008-03-06 14:26:07 +0800 |
commit | bc6cdac7eda5e31c8fab6e891a7dc2078a7d22c6 (patch) | |
tree | dc10cb41cd1280cf115c6bf5a1302481a969e15d /cpp/demo/IceGrid/allocate/Client.cpp | |
parent | Fix to fix for 2395. Backed out Dwayne's previous change because we both work... (diff) | |
download | ice-bc6cdac7eda5e31c8fab6e891a7dc2078a7d22c6.tar.bz2 ice-bc6cdac7eda5e31c8fab6e891a7dc2078a7d22c6.tar.xz ice-bc6cdac7eda5e31c8fab6e891a7dc2078a7d22c6.zip |
Squashed commit of the following:
commit c2f83d9a3e0e1f97e76f33d7992ef8e3e2994d91
Author: Matthew Newhook <matthew@zeroc.com>
Date: Thu Mar 6 14:22:52 2008 +0800
Cleanup some IceGrid configuration files.
commit 4e33903c9ae238b9e317fc3f1f3e281c816374dd
Author: Matthew Newhook <matthew@zeroc.com>
Date: Thu Mar 6 14:17:10 2008 +0800
remove ttl setting.
commit c418b308ff7cc8e8a4296819938b88dfedc16a97
Author: Matthew Newhook <matthew@zeroc.com>
Date: Thu Mar 6 14:16:32 2008 +0800
remove useless PopulateEmptyIndices config.
commit da70d3936f921aa2c92bd2db7b1fcddb4467a9bd
Author: Matthew Newhook <matthew@zeroc.com>
Date: Thu Mar 6 13:59:51 2008 +0800
- Removed interrupt handlers for interactive C++ demos.
- Lots of cleanups to demos.
Diffstat (limited to 'cpp/demo/IceGrid/allocate/Client.cpp')
-rw-r--r-- | cpp/demo/IceGrid/allocate/Client.cpp | 84 |
1 files changed, 24 insertions, 60 deletions
diff --git a/cpp/demo/IceGrid/allocate/Client.cpp b/cpp/demo/IceGrid/allocate/Client.cpp index 3a0587e8b1a..6ac664ce5b7 100644 --- a/cpp/demo/IceGrid/allocate/Client.cpp +++ b/cpp/demo/IceGrid/allocate/Client.cpp @@ -9,7 +9,7 @@ #include <IceUtil/IceUtil.h> #include <Ice/Ice.h> -#include <IceGrid/Registry.h> +#include <IceGrid/IceGrid.h> #include <Hello.h> 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,8 @@ 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 +132,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,11 +141,8 @@ 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 { @@ -158,11 +155,11 @@ HelloClient::run(int argc, char* argv[]) HelloPrx hello; try { - hello = HelloPrx::checkedCast(_session->allocateObjectById(communicator()->stringToIdentity("hello"))); + hello = HelloPrx::checkedCast(session->allocateObjectById(communicator()->stringToIdentity("hello"))); } catch(const IceGrid::ObjectNotRegisteredException&) { - hello = HelloPrx::checkedCast(_session->allocateObjectByType("::Demo::Hello")); + hello = HelloPrx::checkedCast(session->allocateObjectByType("::Demo::Hello")); } menu(); @@ -214,50 +211,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 |