summaryrefslogtreecommitdiff
path: root/cpp/demo/Freeze/phonebook/Client.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/demo/Freeze/phonebook/Client.cpp')
-rw-r--r--cpp/demo/Freeze/phonebook/Client.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/cpp/demo/Freeze/phonebook/Client.cpp b/cpp/demo/Freeze/phonebook/Client.cpp
index 625041380a5..2478d5f7429 100644
--- a/cpp/demo/Freeze/phonebook/Client.cpp
+++ b/cpp/demo/Freeze/phonebook/Client.cpp
@@ -11,9 +11,11 @@
using namespace std;
+
class PhoneBookClient : public Ice::Application
{
virtual int run(int argc, char* argv[]);
+ virtual void interruptCallback(int);
};
int
@@ -26,6 +28,30 @@ main(int argc, char* argv[])
int
PhoneBookClient::run(int argc, char* argv[])
{
+ //
+ // Since this is an interactive demo we want the custom interrupt
+ // callback to be called when the process is interrupted.
+ //
+ userCallbackOnInterrupt();
+
int runParser(int, char*[], const Ice::CommunicatorPtr&);
return runParser(argc, argv, communicator());
}
+
+void
+PhoneBookClient::interruptCallback(int)
+{
+ try
+ {
+ communicator()->destroy();
+ }
+ catch(const IceUtil::Exception& ex)
+ {
+ cerr << appName() << ": " << ex << endl;
+ }
+ catch(...)
+ {
+ cerr << appName() << ": unknown exception" << endl;
+ }
+ exit(EXIT_SUCCESS);
+}