diff options
Diffstat (limited to 'cpp/demo/Glacier2/chat/Client.cpp')
-rwxr-xr-x | cpp/demo/Glacier2/chat/Client.cpp | 310 |
1 files changed, 155 insertions, 155 deletions
diff --git a/cpp/demo/Glacier2/chat/Client.cpp b/cpp/demo/Glacier2/chat/Client.cpp index 4aadf845f5c..d6c9c46da19 100755 --- a/cpp/demo/Glacier2/chat/Client.cpp +++ b/cpp/demo/Glacier2/chat/Client.cpp @@ -73,16 +73,16 @@ public: { #ifdef __xlC__ - // - // The xlC compiler synchronizes cin and cout; to see the messages - // while accepting input through cin, we have to print the messages - // with printf - // - - printf("%s\n", data.c_str()); - fflush(0); + // + // The xlC compiler synchronizes cin and cout; to see the messages + // while accepting input through cin, we have to print the messages + // with printf + // + + printf("%s\n", data.c_str()); + fflush(0); #else - cout << data << endl; + cout << data << endl; #endif } }; @@ -94,128 +94,128 @@ public: virtual int 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. - // - callbackOnInterrupt(); - - { - IceUtil::Mutex::Lock sync(_mutex); - Ice::RouterPrx defaultRouter = communicator()->getDefaultRouter(); - if(!defaultRouter) - { - cerr << argv[0] << ": no default router set" << endl; - return EXIT_FAILURE; - } - - _router = Glacier2::RouterPrx::checkedCast(defaultRouter); - if(!_router) - { - cerr << argv[0] << ": configured router is not a Glacier2 router" << endl; - return EXIT_FAILURE; - } - } - - ChatSessionPrx session; - while(true) - { - cout << "This demo accepts any user-id / password combination.\n"; - - string id; - cout << "user id: " << flush; - getline(cin, id); - id = trim(id); - - string pw; - cout << "password: " << flush; - getline(cin, pw); - pw = trim(pw); - - try - { - session = ChatSessionPrx::uncheckedCast(_router->createSession(id, pw)); - break; - } - catch(const Glacier2::PermissionDeniedException& ex) - { - cout << "permission denied:\n" << ex.reason << endl; - } - } - - { - IceUtil::Mutex::Lock sync(_mutex); - _ping = new SessionPingThread(session, (long)_router->getSessionTimeout() / 2); - _ping->start(); - } - - Ice::Identity callbackReceiverIdent; - callbackReceiverIdent.name = "callbackReceiver"; - callbackReceiverIdent.category = _router->getCategoryForClient(); - - Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("Chat.Client"); - ChatCallbackPrx callback = ChatCallbackPrx::uncheckedCast( - adapter->add(new ChatCallbackI, callbackReceiverIdent)); - adapter->activate(); - - session->setCallback(callback); - - menu(); - - try - { - do - { - string s; - cout << "==> "; - getline(cin, s); - s = trim(s); - if(!s.empty()) - { - if(s[0] == '/') - { - if(s == "/quit") - { - break; - } - menu(); - } - else - { - session->say(s); - } - } - } - while(cin.good()); - - cleanup(); - } - catch(const Ice::Exception& ex) - { - cerr << ex << endl; - cleanup(); - - return EXIT_FAILURE; - } - return EXIT_SUCCESS; + // + // Since this is an interactive demo we want the custom interrupt + // callback to be called when the process is interrupted. + // + callbackOnInterrupt(); + + { + IceUtil::Mutex::Lock sync(_mutex); + Ice::RouterPrx defaultRouter = communicator()->getDefaultRouter(); + if(!defaultRouter) + { + cerr << argv[0] << ": no default router set" << endl; + return EXIT_FAILURE; + } + + _router = Glacier2::RouterPrx::checkedCast(defaultRouter); + if(!_router) + { + cerr << argv[0] << ": configured router is not a Glacier2 router" << endl; + return EXIT_FAILURE; + } + } + + ChatSessionPrx session; + while(true) + { + cout << "This demo accepts any user-id / password combination.\n"; + + string id; + cout << "user id: " << flush; + getline(cin, id); + id = trim(id); + + string pw; + cout << "password: " << flush; + getline(cin, pw); + pw = trim(pw); + + try + { + session = ChatSessionPrx::uncheckedCast(_router->createSession(id, pw)); + break; + } + catch(const Glacier2::PermissionDeniedException& ex) + { + cout << "permission denied:\n" << ex.reason << endl; + } + } + + { + IceUtil::Mutex::Lock sync(_mutex); + _ping = new SessionPingThread(session, (long)_router->getSessionTimeout() / 2); + _ping->start(); + } + + Ice::Identity callbackReceiverIdent; + callbackReceiverIdent.name = "callbackReceiver"; + callbackReceiverIdent.category = _router->getCategoryForClient(); + + Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("Chat.Client"); + ChatCallbackPrx callback = ChatCallbackPrx::uncheckedCast( + adapter->add(new ChatCallbackI, callbackReceiverIdent)); + adapter->activate(); + + session->setCallback(callback); + + menu(); + + try + { + do + { + string s; + cout << "==> "; + getline(cin, s); + s = trim(s); + if(!s.empty()) + { + if(s[0] == '/') + { + if(s == "/quit") + { + break; + } + menu(); + } + else + { + session->say(s); + } + } + } + while(cin.good()); + + cleanup(); + } + catch(const Ice::Exception& ex) + { + cerr << ex << endl; + cleanup(); + + return EXIT_FAILURE; + } + return EXIT_SUCCESS; } virtual void interruptCallback(int) { - try - { - communicator()->destroy(); - } - catch(const IceUtil::Exception& ex) - { - cerr << appName() << ": " << ex << endl; - } - catch(...) - { - cerr << appName() << ": unknown exception" << endl; - } - exit(EXIT_SUCCESS); + try + { + communicator()->destroy(); + } + catch(const IceUtil::Exception& ex) + { + cerr << appName() << ": " << ex << endl; + } + catch(...) + { + cerr << appName() << ": unknown exception" << endl; + } + exit(EXIT_SUCCESS); } private: @@ -223,45 +223,45 @@ private: void cleanup() { - IceUtil::Mutex::Lock sync(_mutex); - if(_router) - { - try - { - _router->destroySession(); - } - catch(const Ice::ConnectionLostException&) - { - // - // Expected: the router closed the connection. - // - } - _router = 0; - } - if(_ping) - { - _ping->destroy(); - _ping->getThreadControl().join(); - _ping = 0; - } + IceUtil::Mutex::Lock sync(_mutex); + if(_router) + { + try + { + _router->destroySession(); + } + catch(const Ice::ConnectionLostException&) + { + // + // Expected: the router closed the connection. + // + } + _router = 0; + } + if(_ping) + { + _ping->destroy(); + _ping->getThreadControl().join(); + _ping = 0; + } } void menu() { - cout << "enter /quit to exit." << endl; + cout << "enter /quit to exit." << endl; } string trim(const string& s) { - static const string delims = "\t\r\n "; - string::size_type last = s.find_last_not_of(delims); - if(last != string::npos) - { - return s.substr(s.find_first_not_of(delims), last+1); - } - return s; + static const string delims = "\t\r\n "; + string::size_type last = s.find_last_not_of(delims); + if(last != string::npos) + { + return s.substr(s.find_first_not_of(delims), last+1); + } + return s; } IceUtil::Mutex _mutex; |