diff options
Diffstat (limited to 'cpp/demo/Ice/latency/Client.cpp')
-rw-r--r-- | cpp/demo/Ice/latency/Client.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/cpp/demo/Ice/latency/Client.cpp b/cpp/demo/Ice/latency/Client.cpp new file mode 100644 index 00000000000..7b7eb974fe4 --- /dev/null +++ b/cpp/demo/Ice/latency/Client.cpp @@ -0,0 +1,64 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2011 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 <Latency.h> + +using namespace std; +using namespace Demo; + +class LatencyClient : public Ice::Application +{ +public: + + virtual int run(int, char*[]); +}; + +int +main(int argc, char* argv[]) +{ + LatencyClient app; + return app.main(argc, argv, "config.client"); +} + +int +LatencyClient::run(int argc, char* argv[]) +{ + if(argc > 1) + { + cerr << appName() << ": too many arguments" << endl; + return EXIT_FAILURE; + } + + PingPrx ping = PingPrx::checkedCast(communicator()->propertyToProxy("Ping.Proxy")); + if(!ping) + { + cerr << argv[0] << ": invalid proxy" << endl; + return EXIT_FAILURE; + } + + // Initial ping to setup the connection. + ping->ice_ping(); + + IceUtil::Time tm = IceUtil::Time::now(IceUtil::Time::Monotonic); + + const int repetitions = 100000; + cout << "pinging server " << repetitions << " times (this may take a while)" << endl; + for(int i = 0; i < repetitions; ++i) + { + ping->ice_ping(); + } + + tm = IceUtil::Time::now(IceUtil::Time::Monotonic) - tm; + + cout << "time for " << repetitions << " pings: " << tm * 1000 << "ms" << endl; + cout << "time per ping: " << tm * 1000 / repetitions << "ms" << endl; + + return EXIT_SUCCESS; +} |