diff options
Diffstat (limited to 'cpp/demo/Ice/async/WorkQueue.cpp')
-rw-r--r-- | cpp/demo/Ice/async/WorkQueue.cpp | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/cpp/demo/Ice/async/WorkQueue.cpp b/cpp/demo/Ice/async/WorkQueue.cpp deleted file mode 100644 index e4a3827af7e..00000000000 --- a/cpp/demo/Ice/async/WorkQueue.cpp +++ /dev/null @@ -1,107 +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 <Ice/Ice.h> -#include <WorkQueue.h> - -using namespace std; - -WorkQueue::WorkQueue() : - _done(false) -{ -} - -void -WorkQueue::run() -{ - IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); - - while(!_done) - { - if(_callbacks.size() == 0) - { - _monitor.wait(); - } - - if(_callbacks.size() != 0) - { - // - // Get next work item. - // - CallbackEntry entry = _callbacks.front(); - - // - // Wait for the amount of time indicated in delay to - // emulate a process that takes a significant period of - // time to complete. - // - _monitor.timedWait(IceUtil::Time::milliSeconds(entry.delay)); - - if(!_done) - { - // - // Print greeting and send response. - // - _callbacks.pop_front(); - cout << "Belated Hello World!" << endl; - entry.cb->ice_response(); - } - } - } - - // - // Throw exception for any outstanding requests. - // - list<CallbackEntry>::const_iterator p; - for(p = _callbacks.begin(); p != _callbacks.end(); ++p) - { - (*p).cb->ice_exception(Demo::RequestCanceledException()); - } -} - -void -WorkQueue::add(const Demo::AMD_Hello_sayHelloPtr& cb, int delay) -{ - IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); - - if(!_done) - { - // - // Add work item. - // - CallbackEntry entry; - entry.cb = cb; - entry.delay = delay; - - if(_callbacks.size() == 0) - { - _monitor.notify(); - } - _callbacks.push_back(entry); - } - else - { - // - // Destroyed, throw exception. - // - cb->ice_exception(Demo::RequestCanceledException()); - } -} - -void -WorkQueue::destroy() -{ - IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); - - // - // Set done flag and notify. - // - _done = true; - _monitor.notify(); -} |