diff options
author | Benoit Foucher <benoit@zeroc.com> | 2012-10-08 15:03:46 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2012-10-08 15:03:46 +0200 |
commit | d36ec7c740d5dfaa8e4ce2a2df6c9cb0818f01ae (patch) | |
tree | 7abffd29e98ff112cec85b658fab404961f8306a /cpp/demo/Ice/properties/Client.cpp | |
parent | FreeBSD port (diff) | |
parent | Win32 fixes (diff) | |
download | ice-d36ec7c740d5dfaa8e4ce2a2df6c9cb0818f01ae.tar.bz2 ice-d36ec7c740d5dfaa8e4ce2a2df6c9cb0818f01ae.tar.xz ice-d36ec7c740d5dfaa8e4ce2a2df6c9cb0818f01ae.zip |
Merge branch 'mx' into encoding11
Conflicts:
cpp/demo/Freeze/backup/.depend
cpp/demo/Freeze/backup/.depend.mak
cpp/demo/Freeze/bench/.depend
cpp/demo/Freeze/bench/.depend.mak
cpp/demo/Freeze/casino/.depend
cpp/demo/Freeze/casino/.depend.mak
cpp/demo/Freeze/customEvictor/.depend
cpp/demo/Freeze/customEvictor/.depend.mak
cpp/demo/Freeze/library/.depend
cpp/demo/Freeze/library/.depend.mak
cpp/demo/Freeze/phonebook/.depend
cpp/demo/Freeze/phonebook/.depend.mak
cpp/demo/Freeze/transform/.depend
cpp/demo/Freeze/transform/.depend.mak
cpp/demo/Glacier2/callback/.depend
cpp/demo/Glacier2/callback/.depend.mak
cpp/demo/Glacier2/chat/.depend
cpp/demo/Glacier2/chat/.depend.mak
cpp/demo/Ice/async/.depend
cpp/demo/Ice/async/.depend.mak
cpp/demo/Ice/bidir/.depend
cpp/demo/Ice/bidir/.depend.mak
cpp/demo/Ice/callback/.depend
cpp/demo/Ice/callback/.depend.mak
cpp/demo/Ice/converter/.depend
cpp/demo/Ice/converter/.depend.mak
cpp/demo/Ice/hello/.depend
cpp/demo/Ice/hello/.depend.mak
cpp/demo/Ice/interleaved/.depend
cpp/demo/Ice/interleaved/.depend.mak
cpp/demo/Ice/invoke/.depend
cpp/demo/Ice/invoke/.depend.mak
cpp/demo/Ice/latency/.depend
cpp/demo/Ice/latency/.depend.mak
cpp/demo/Ice/minimal/.depend
cpp/demo/Ice/minimal/.depend.mak
cpp/demo/Ice/multicast/.depend
cpp/demo/Ice/multicast/.depend.mak
cpp/demo/Ice/nested/.depend
cpp/demo/Ice/nested/.depend.mak
cpp/demo/Ice/nrvo/.depend
cpp/demo/Ice/nrvo/.depend.mak
cpp/demo/Ice/plugin/.depend
cpp/demo/Ice/plugin/.depend.mak
cpp/demo/Ice/session/.depend
cpp/demo/Ice/session/.depend.mak
cpp/demo/Ice/throughput/.depend
cpp/demo/Ice/throughput/.depend.mak
cpp/demo/Ice/value/.depend
cpp/demo/Ice/value/.depend.mak
cpp/demo/IceBox/hello/.depend
cpp/demo/IceBox/hello/.depend.mak
cpp/demo/IceGrid/allocate/.depend
cpp/demo/IceGrid/allocate/.depend.mak
cpp/demo/IceGrid/icebox/.depend
cpp/demo/IceGrid/icebox/.depend.mak
cpp/demo/IceGrid/replication/.depend
cpp/demo/IceGrid/replication/.depend.mak
cpp/demo/IceGrid/secure/.depend
cpp/demo/IceGrid/secure/.depend.mak
cpp/demo/IceGrid/sessionActivation/.depend
cpp/demo/IceGrid/sessionActivation/.depend.mak
cpp/demo/IceGrid/simple/.depend
cpp/demo/IceGrid/simple/.depend.mak
cpp/demo/IceStorm/clock/.depend
cpp/demo/IceStorm/clock/.depend.mak
cpp/demo/IceStorm/counter/.depend
cpp/demo/IceStorm/counter/.depend.mak
cpp/demo/IceStorm/replicated/.depend
cpp/demo/IceStorm/replicated/.depend.mak
cpp/demo/IceStorm/replicated2/.depend
cpp/demo/IceStorm/replicated2/.depend.mak
cpp/demo/book/evictor_filesystem/.depend
cpp/demo/book/evictor_filesystem/.depend.mak
cpp/demo/book/lifecycle/.depend
cpp/demo/book/lifecycle/.depend.mak
cpp/demo/book/map_filesystem/.depend
cpp/demo/book/map_filesystem/.depend.mak
cpp/demo/book/printer/.depend
cpp/demo/book/printer/.depend.mak
cpp/demo/book/simple_filesystem/.depend
cpp/demo/book/simple_filesystem/.depend.mak
cpp/include/Ice/Outgoing.h
cpp/include/Ice/OutgoingAsync.h
cpp/include/Ice/StreamTraits.h
cpp/src/Freeze/.depend
cpp/src/Freeze/.depend.mak
cpp/src/FreezeScript/.depend
cpp/src/FreezeScript/.depend.mak
cpp/src/Glacier2/.depend
cpp/src/Glacier2/.depend.mak
cpp/src/Glacier2Lib/.depend
cpp/src/Glacier2Lib/.depend.mak
cpp/src/Ice/.depend
cpp/src/Ice/.depend.mak
cpp/src/IceBox/.depend
cpp/src/IceBox/.depend.mak
cpp/src/IceDB/.depend
cpp/src/IceDB/.depend.mak
cpp/src/IceGrid/.depend
cpp/src/IceGrid/.depend.mak
cpp/src/IceGrid/FreezeDB/.depend
cpp/src/IceGrid/FreezeDB/.depend.mak
cpp/src/IceGrid/ServerCache.h
cpp/src/IceGrid/ServerI.h
cpp/src/IceGridLib/.depend
cpp/src/IceGridLib/.depend.mak
cpp/src/IcePatch2/.depend
cpp/src/IcePatch2/.depend.mak
cpp/src/IcePatch2Lib/.depend
cpp/src/IcePatch2Lib/.depend.mak
cpp/src/IceSSL/.depend
cpp/src/IceSSL/.depend.mak
cpp/src/IceStorm/.depend
cpp/src/IceStorm/.depend.mak
cpp/src/IceStorm/FreezeDB/.depend
cpp/src/IceStorm/FreezeDB/.depend.mak
cpp/src/IceStormLib/.depend
cpp/src/IceStormLib/.depend.mak
cpp/src/slice2cpp/Gen.cpp
cpp/test/Freeze/complex/.depend
cpp/test/Freeze/complex/.depend.mak
cpp/test/Freeze/dbmap/.depend
cpp/test/Freeze/dbmap/.depend.mak
cpp/test/Freeze/evictor/.depend
cpp/test/Freeze/evictor/.depend.mak
cpp/test/Freeze/fileLock/.depend
cpp/test/Freeze/fileLock/.depend.mak
cpp/test/FreezeScript/dbmap/.depend
cpp/test/FreezeScript/dbmap/.depend.mak
cpp/test/FreezeScript/evictor/.depend
cpp/test/FreezeScript/evictor/.depend.mak
cpp/test/Glacier2/attack/.depend
cpp/test/Glacier2/attack/.depend.mak
cpp/test/Glacier2/dynamicFiltering/.depend
cpp/test/Glacier2/dynamicFiltering/.depend.mak
cpp/test/Glacier2/override/.depend
cpp/test/Glacier2/override/.depend.mak
cpp/test/Glacier2/router/.depend
cpp/test/Glacier2/router/.depend.mak
cpp/test/Glacier2/sessionControl/.depend
cpp/test/Glacier2/sessionControl/.depend.mak
cpp/test/Glacier2/sessionHelper/.depend
cpp/test/Glacier2/sessionHelper/.depend.mak
cpp/test/Glacier2/ssl/.depend
cpp/test/Glacier2/ssl/.depend.mak
cpp/test/Glacier2/staticFiltering/.depend
cpp/test/Glacier2/staticFiltering/.depend.mak
cpp/test/Ice/adapterDeactivation/.depend
cpp/test/Ice/adapterDeactivation/.depend.mak
cpp/test/Ice/ami/.depend
cpp/test/Ice/ami/.depend.mak
cpp/test/Ice/background/.depend
cpp/test/Ice/background/.depend.mak
cpp/test/Ice/binding/.depend
cpp/test/Ice/binding/.depend.mak
cpp/test/Ice/checksum/.depend
cpp/test/Ice/checksum/.depend.mak
cpp/test/Ice/checksum/server/.depend
cpp/test/Ice/checksum/server/.depend.mak
cpp/test/Ice/custom/.depend
cpp/test/Ice/custom/.depend.mak
cpp/test/Ice/defaultServant/.depend
cpp/test/Ice/defaultServant/.depend.mak
cpp/test/Ice/defaultValue/.depend
cpp/test/Ice/defaultValue/.depend.mak
cpp/test/Ice/dispatcher/.depend
cpp/test/Ice/dispatcher/.depend.mak
cpp/test/Ice/exceptions/.depend
cpp/test/Ice/exceptions/.depend.mak
cpp/test/Ice/facets/.depend
cpp/test/Ice/facets/.depend.mak
cpp/test/Ice/faultTolerance/.depend
cpp/test/Ice/faultTolerance/.depend.mak
cpp/test/Ice/gc/.depend
cpp/test/Ice/gc/.depend.mak
cpp/test/Ice/hash/.depend
cpp/test/Ice/hash/.depend.mak
cpp/test/Ice/hold/.depend
cpp/test/Ice/hold/.depend.mak
cpp/test/Ice/info/.depend
cpp/test/Ice/info/.depend.mak
cpp/test/Ice/inheritance/.depend
cpp/test/Ice/inheritance/.depend.mak
cpp/test/Ice/interceptor/.depend
cpp/test/Ice/interceptor/.depend.mak
cpp/test/Ice/invoke/.depend
cpp/test/Ice/invoke/.depend.mak
cpp/test/Ice/location/.depend
cpp/test/Ice/location/.depend.mak
cpp/test/Ice/objects/.depend
cpp/test/Ice/objects/.depend.mak
cpp/test/Ice/operations/.depend
cpp/test/Ice/operations/.depend.mak
cpp/test/Ice/plugin/.depend
cpp/test/Ice/plugin/.depend.mak
cpp/test/Ice/properties/.depend
cpp/test/Ice/properties/.depend.mak
cpp/test/Ice/proxy/.depend
cpp/test/Ice/proxy/.depend.mak
cpp/test/Ice/retry/.depend
cpp/test/Ice/retry/.depend.mak
cpp/test/Ice/servantLocator/.depend
cpp/test/Ice/servantLocator/.depend.mak
cpp/test/Ice/slicing/exceptions/.depend
cpp/test/Ice/slicing/exceptions/.depend.mak
cpp/test/Ice/slicing/objects/.depend
cpp/test/Ice/slicing/objects/.depend.mak
cpp/test/Ice/stream/.depend
cpp/test/Ice/stream/.depend.mak
cpp/test/Ice/stringConverter/.depend
cpp/test/Ice/stringConverter/.depend.mak
cpp/test/Ice/threadPoolPriority/.depend
cpp/test/Ice/threadPoolPriority/.depend.mak
cpp/test/Ice/timeout/.depend
cpp/test/Ice/timeout/.depend.mak
cpp/test/Ice/udp/.depend
cpp/test/Ice/udp/.depend.mak
cpp/test/IceBox/configuration/.depend
cpp/test/IceBox/configuration/.depend.mak
cpp/test/IceGrid/activation/.depend
cpp/test/IceGrid/activation/.depend.mak
cpp/test/IceGrid/admin/.depend
cpp/test/IceGrid/admin/.depend.mak
cpp/test/IceGrid/allocation/.depend
cpp/test/IceGrid/allocation/.depend.mak
cpp/test/IceGrid/deployer/.depend
cpp/test/IceGrid/deployer/.depend.mak
cpp/test/IceGrid/distribution/.depend
cpp/test/IceGrid/distribution/.depend.mak
cpp/test/IceGrid/replicaGroup/.depend
cpp/test/IceGrid/replicaGroup/.depend.mak
cpp/test/IceGrid/replication/.depend
cpp/test/IceGrid/replication/.depend.mak
cpp/test/IceGrid/session/.depend
cpp/test/IceGrid/session/.depend.mak
cpp/test/IceGrid/simple/.depend
cpp/test/IceGrid/simple/.depend.mak
cpp/test/IceGrid/update/.depend
cpp/test/IceGrid/update/.depend.mak
cpp/test/IceSSL/configuration/.depend
cpp/test/IceSSL/configuration/.depend.mak
cpp/test/IceStorm/federation/.depend
cpp/test/IceStorm/federation/.depend.mak
cpp/test/IceStorm/federation2/.depend
cpp/test/IceStorm/federation2/.depend.mak
cpp/test/IceStorm/rep1/.depend
cpp/test/IceStorm/rep1/.depend.mak
cpp/test/IceStorm/repgrid/.depend
cpp/test/IceStorm/repgrid/.depend.mak
cpp/test/IceStorm/repstress/.depend
cpp/test/IceStorm/repstress/.depend.mak
cpp/test/IceStorm/single/.depend
cpp/test/IceStorm/single/.depend.mak
cpp/test/IceStorm/stress/.depend
cpp/test/IceStorm/stress/.depend.mak
cpp/test/Slice/keyword/.depend
cpp/test/Slice/keyword/.depend.mak
cpp/test/Slice/parser/.depend
cpp/test/Slice/parser/.depend.mak
cpp/test/Slice/structure/.depend
cpp/test/Slice/structure/.depend.mak
py/modules/IcePy/.depend
py/modules/IcePy/.depend.mak
Diffstat (limited to 'cpp/demo/Ice/properties/Client.cpp')
-rw-r--r-- | cpp/demo/Ice/properties/Client.cpp | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/cpp/demo/Ice/properties/Client.cpp b/cpp/demo/Ice/properties/Client.cpp new file mode 100644 index 00000000000..e88327f3c9d --- /dev/null +++ b/cpp/demo/Ice/properties/Client.cpp @@ -0,0 +1,176 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2010 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <Ice/Ice.h> +#include <Props.h> + +using namespace std; +using namespace Demo; + +class PropsClient : public Ice::Application +{ +public: + + PropsClient(); + + virtual int run(int, char*[]); + +private: + + void menu(); + void show(const Ice::PropertiesAdminPrx&); +}; + +int +main(int argc, char* argv[]) +{ + PropsClient app; + return app.main(argc, argv, "config.client"); +} + +PropsClient::PropsClient() : + // + // Since this is an interactive demo we don't want any signal + // handling. + // + Ice::Application(Ice::NoSignalHandling) +{ +} + +int +PropsClient::run(int argc, char* argv[]) +{ + if(argc > 1) + { + cerr << appName() << ": too many arguments" << endl; + return EXIT_FAILURE; + } + + PropsPrx props = PropsPrx::checkedCast(communicator()->propertyToProxy("Props.Proxy")); + if(!props) + { + cerr << argv[0] << ": invalid proxy" << endl; + return EXIT_FAILURE; + } + + Ice::PropertiesAdminPrx admin = + Ice::PropertiesAdminPrx::checkedCast(communicator()->propertyToProxy("Admin.Proxy")); + + Ice::PropertyDict batch1; + batch1["Demo.Prop1"] = "1"; + batch1["Demo.Prop2"] = "2"; + batch1["Demo.Prop3"] = "3"; + + Ice::PropertyDict batch2; + batch2["Demo.Prop1"] = "10"; + batch2["Demo.Prop2"] = ""; // An empty value removes this property + batch2["Demo.Prop3"] = "30"; + + show(admin); + menu(); + + char c; + do + { + try + { + cout << "==> "; + cin >> c; + if(c == '1' || c == '2') + { + Ice::PropertyDict dict = c == '1' ? batch1 : batch2; + cout << "Sending:" << endl; + for(Ice::PropertyDict::iterator p = dict.begin(); p != dict.end(); ++p) + { + if(p->first.find("Demo") == 0) + { + cout << " " << p->first << "=" << p->second << endl; + } + } + cout << endl; + + admin->setProperties(dict); + + cout << "Changes:" << endl; + Ice::PropertyDict changes = props->getChanges(); + if(changes.empty()) + { + cout << " None." << endl; + } + else + { + for(Ice::PropertyDict::iterator p = changes.begin(); p != changes.end(); ++p) + { + cout << " " << p->first; + if(p->second.empty()) + { + cout << " was removed" << endl; + } + else + { + cout << " is now " << p->second << endl; + } + } + } + } + else if(c == 'c') + { + show(admin); + } + else if(c == 's') + { + props->shutdown(); + } + 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; +} + +void +PropsClient::menu() +{ + cout << endl << + "usage:\n" + "1: set properties (batch 1)\n" + "2: set properties (batch 2)\n" + "c: show current properties\n" + "s: shutdown server\n" + "x: exit\n" + "?: help\n"; +} + +void +PropsClient::show(const Ice::PropertiesAdminPrx& admin) +{ + Ice::PropertyDict props = admin->getPropertiesForPrefix("Demo"); + cout << "Server's current settings:" << endl; + for(Ice::PropertyDict::iterator p = props.begin(); p != props.end(); ++p) + { + cout << " " << p->first << "=" << p->second << endl; + } +} |