diff options
author | Mark Spruiell <mes@zeroc.com> | 2002-04-01 20:41:28 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2002-04-01 20:41:28 +0000 |
commit | f5452c64777343b5b854629f600e1734ef6f9008 (patch) | |
tree | e4a76b4a6214ad9544470031848405acd0bc4197 /cpp/demo/IceBox/hello/Client.cpp | |
parent | adding IceBox (diff) | |
download | ice-f5452c64777343b5b854629f600e1734ef6f9008.tar.bz2 ice-f5452c64777343b5b854629f600e1734ef6f9008.tar.xz ice-f5452c64777343b5b854629f600e1734ef6f9008.zip |
initial check-in
Diffstat (limited to 'cpp/demo/IceBox/hello/Client.cpp')
-rw-r--r-- | cpp/demo/IceBox/hello/Client.cpp | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/cpp/demo/IceBox/hello/Client.cpp b/cpp/demo/IceBox/hello/Client.cpp new file mode 100644 index 00000000000..fc0b25c6e0e --- /dev/null +++ b/cpp/demo/IceBox/hello/Client.cpp @@ -0,0 +1,193 @@ +// ********************************************************************** +// +// Copyright (c) 2001 +// MutableRealms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#include <Ice/Ice.h> +#include <Hello.h> + +using namespace std; + +void +menu() +{ + cout << + "usage:\n" + "t: send greeting as twoway\n" + "o: send greeting as oneway\n" + "O: send greeting as batch oneway\n" + "d: send greeting as datagram\n" + "D: send greeting as batch datagram\n" + "f: flush all batch requests\n" + "T: set a timeout\n" + "S: switch secure mode on/off\n" + "x: exit\n" + "?: help\n"; +} + +int +run(int argc, char* argv[], const Ice::CommunicatorPtr& communicator) +{ + Ice::PropertiesPtr properties = communicator->getProperties(); + const char* refProperty = "Hello.Hello"; + std::string ref = properties->getProperty(refProperty); + if (ref.empty()) + { + cerr << argv[0] << ": property `" << refProperty << "' not set" << endl; + return EXIT_FAILURE; + } + + Ice::ObjectPrx base = communicator->stringToProxy(ref); + HelloPrx twoway = HelloPrx::checkedCast(base->ice_twoway()->ice_timeout(-1)->ice_secure(false)); + if (!twoway) + { + cerr << argv[0] << ": invalid object reference" << endl; + return EXIT_FAILURE; + } + HelloPrx oneway = HelloPrx::uncheckedCast(twoway->ice_oneway()); + HelloPrx batchOneway = HelloPrx::uncheckedCast(twoway->ice_batchOneway()); + HelloPrx datagram = HelloPrx::uncheckedCast(twoway->ice_datagram()); + HelloPrx batchDatagram = HelloPrx::uncheckedCast(twoway->ice_batchDatagram()); + + bool secure = false; + int timeout = -1; + + menu(); + + char c; + do + { + try + { + cout << "==> "; + cin >> c; + if (c == 't') + { + twoway->hello(); + } + else if (c == 'o') + { + oneway->hello(); + } + else if (c == 'O') + { + batchOneway->hello(); + } + else if (c == 'd') + { + datagram->hello(); + } + else if (c == 'D') + { + batchDatagram->hello(); + } + else if (c == 'f') + { + batchOneway->ice_flush(); + batchDatagram->ice_flush(); + } + else if (c == 'T') + { + if (timeout == -1) + { + timeout = 2000; + } + else + { + timeout = -1; + } + + twoway = HelloPrx::uncheckedCast(twoway->ice_timeout(timeout)); + oneway = HelloPrx::uncheckedCast(oneway->ice_timeout(timeout)); + batchOneway = HelloPrx::uncheckedCast(batchOneway->ice_timeout(timeout)); + + if (timeout == -1) + { + cout << "timeout is now switched off" << endl; + } + else + { + cout << "timeout is now set to 2000ms" << endl; + } + } + else if (c == 'S') + { + secure = !secure; + + twoway = HelloPrx::uncheckedCast(twoway->ice_secure(secure)); + oneway = HelloPrx::uncheckedCast(oneway->ice_secure(secure)); + batchOneway = HelloPrx::uncheckedCast(batchOneway->ice_secure(secure)); + datagram = HelloPrx::uncheckedCast(datagram->ice_secure(secure)); + batchDatagram = HelloPrx::uncheckedCast(batchDatagram->ice_secure(secure)); + + if (secure) + { + cout << "secure mode is now on" << endl; + } + else + { + cout << "secure mode is now off" << endl; + } + } + else if (c == 'x') + { + // Nothing to do + } + else if (c == '?') + { + menu(); + } + else + { + cout << "unknown command `" << c << "'" << endl; + menu(); + } + } + catch(const Ice::Exception& ex) + { + cerr << ex << endl; + } + } + while (cin.good() && c != 'x'); + + return EXIT_SUCCESS; +} + +int +main(int argc, char* argv[]) +{ + int status; + Ice::CommunicatorPtr communicator; + + try + { + Ice::PropertiesPtr properties = Ice::createPropertiesFromFile(argc, argv, "config"); + communicator = Ice::initializeWithProperties(properties); + status = run(argc, argv, communicator); + } + catch(const Ice::Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + if (communicator) + { + try + { + communicator->destroy(); + } + catch(const Ice::Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + } + + return status; +} |