diff options
Diffstat (limited to 'cpp/demo/Freeze/customEvictor/Client.cpp')
-rw-r--r-- | cpp/demo/Freeze/customEvictor/Client.cpp | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/cpp/demo/Freeze/customEvictor/Client.cpp b/cpp/demo/Freeze/customEvictor/Client.cpp deleted file mode 100644 index 0ad2ea226b9..00000000000 --- a/cpp/demo/Freeze/customEvictor/Client.cpp +++ /dev/null @@ -1,206 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2015 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 <IceUtil/IceUtil.h> -#include <Ice/Ice.h> -#include <Item.h> -#include <stdlib.h> - -using namespace std; -using namespace Warehouse; - -const int readCount = 15000; -const int writeCount = 1500; - -const int objectCount = 10000; - -class WarehouseClient : public Ice::Application -{ -public: - - virtual int run(int, char*[]); -}; - -int -main(int argc, char* argv[]) -{ - WarehouseClient app; - return app.main(argc, argv, "config.client"); -} - -class ReaderThread : public IceUtil::Thread -{ -public: - - ReaderThread(const ItemPrx& anItem) : - _anItem(anItem), - _requestsPerSecond(-1) - { - } - - virtual void run() - { - // - // Measures how long it takes to read 'readCount' items at random - // - IceUtil::Time startTime = IceUtil::Time::now(IceUtil::Time::Monotonic); - - try - { - for(int i = 0; i < readCount; ++i) - { - int id = rand() % objectCount; - ostringstream os; - os << "P/N " << id; - string nm = os.str(); - - Ice::Identity identity; - identity.name = nm; - ItemPrx item = ItemPrx::uncheckedCast(_anItem->ice_identity(identity)); - item->getDescription(); - } - _requestsPerSecond = - static_cast<int>(readCount / (IceUtil::Time::now(IceUtil::Time::Monotonic) - startTime).toSecondsDouble()); - } - catch(const IceUtil::Exception& e) - { - cerr << "Unexpected exception in ReaderThread: " << e << endl; - } - } - - int getRequestsPerSecond() const - { - return _requestsPerSecond; - } - -private: - - const ItemPrx _anItem; - int _requestsPerSecond; -}; -typedef IceUtil::Handle<ReaderThread> ReaderThreadPtr; - -class WriterThread : public IceUtil::Thread -{ -public: - - WriterThread(const ItemPrx& anItem) : - _anItem(anItem), - _requestsPerSecond(-1) - { - } - - virtual void run() - { - // - // Measure how long it takes to write 'writeCount' items at random. - // - IceUtil::Time startTime = IceUtil::Time::now(IceUtil::Time::Monotonic); - - try - { - for(int i = 0; i < writeCount; ++i) - { - int id = rand() % objectCount; - - ostringstream os; - os << "P/N " << id; - string nm = os.str(); - - Ice::Identity identity; - identity.name = nm; - ItemPrx item = ItemPrx::uncheckedCast(_anItem->ice_identity(identity)); - - item->adjustStock(1); - } - _requestsPerSecond = - static_cast<int>(writeCount / (IceUtil::Time::now(IceUtil::Time::Monotonic) - startTime).toSecondsDouble()); - } - catch(const IceUtil::Exception& e) - { - cerr << "Unexpected exception in WriterThread: " << e << endl; - } - } - - int getRequestsPerSecond() const - { - return _requestsPerSecond; - } - -private: - - const ItemPrx _anItem; - int _requestsPerSecond; -}; -typedef IceUtil::Handle<WriterThread> WriterThreadPtr; - -int -WarehouseClient::run(int argc, char*[]) -{ - if(argc > 1) - { - cerr << appName() << ": too many arguments" << endl; - return EXIT_FAILURE; - } - - // - // Initialize pseudo-random number generator; here, for fair comparisons, - // it's useful to get the same sequence for each run. - // - srand(1); - - // - // Retrieve a proxy to one item (any item will do). - // - ItemPrx anItem = ItemPrx::checkedCast(communicator()->propertyToProxy("Item.Proxy")); - - // - // Start 1 writer and 5 readers. - // - WriterThreadPtr wt = new WriterThread(anItem); - wt->start(); - - const int readerCount = 5; - - ReaderThreadPtr rt[readerCount]; - int i; - for(i = 0; i < readerCount; ++i) - { - rt[i] = new ReaderThread(anItem); - rt[i]->start(); - } - - wt->getThreadControl().join(); - for(i = 0; i < readerCount; ++i) - { - rt[i]->getThreadControl().join(); - } - - // - // Display results. - // - cout.precision(3); - int rpt = wt->getRequestsPerSecond(); - if(rpt > 0) - { - cout << "Writer: " << rpt << " requests per second (" << 1000.0 / rpt << " ms per request)" << endl; - } - - for(i = 0; i < readerCount; ++i) - { - rpt = rt[i]->getRequestsPerSecond(); - if(rpt > 0) - { - cout << "Reader " << i << ": " << rpt << " requests per second (" << 1000.0 / rpt - << " ms per request)" << endl; - } - } - - return EXIT_SUCCESS; -} |