summaryrefslogtreecommitdiff
path: root/cpp/demo/IceGrid/allocate/Client.cpp
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2008-03-06 14:26:07 +0800
committerMatthew Newhook <matthew@zeroc.com>2008-03-06 14:26:07 +0800
commitbc6cdac7eda5e31c8fab6e891a7dc2078a7d22c6 (patch)
treedc10cb41cd1280cf115c6bf5a1302481a969e15d /cpp/demo/IceGrid/allocate/Client.cpp
parentFix to fix for 2395. Backed out Dwayne's previous change because we both work... (diff)
downloadice-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.cpp84
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