summaryrefslogtreecommitdiff
path: root/cpp/demo/Ice/async/QueueI.cpp
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2007-01-17 18:11:11 +0000
committerDwayne Boone <dwayne@zeroc.com>2007-01-17 18:11:11 +0000
commite124e693704faa56ecf32ce2a243d0c3fa3a5e6e (patch)
tree071dcaa6edc458f9371289976a4537880e5bb005 /cpp/demo/Ice/async/QueueI.cpp
parentChanged async demo (diff)
downloadice-e124e693704faa56ecf32ce2a243d0c3fa3a5e6e.tar.bz2
ice-e124e693704faa56ecf32ce2a243d0c3fa3a5e6e.tar.xz
ice-e124e693704faa56ecf32ce2a243d0c3fa3a5e6e.zip
Changed demo
Diffstat (limited to 'cpp/demo/Ice/async/QueueI.cpp')
-rw-r--r--cpp/demo/Ice/async/QueueI.cpp110
1 files changed, 0 insertions, 110 deletions
diff --git a/cpp/demo/Ice/async/QueueI.cpp b/cpp/demo/Ice/async/QueueI.cpp
deleted file mode 100644
index 1d26e6fcb54..00000000000
--- a/cpp/demo/Ice/async/QueueI.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2007 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 <QueueI.h>
-
-using namespace std;
-
-void
-QueueI::get_async(const Demo::AMD_Queue_getPtr& cb, const string& id, const Ice::Current&)
-{
- IceUtil::Mutex::Lock lock(*this);
-
- //
- // If there is already a message in the message queue, send the
- // response immediately. Otherwise add the callback to the
- // request queue.
- //
- if(_messageQueue.size() != 0)
- {
- try
- {
- cb->ice_response(_messageQueue.front());
- _messageQueue.pop_front();
- }
- catch(const Ice::Exception& ex)
- {
- cout << ex << endl;
- }
- }
- else
- {
- Request request;
- request.id = id;
- request.cb = cb;
- _requestQueue.push_back(request);
- }
-}
-
-void
-QueueI::add(const string& message, const Ice::Current&)
-{
- IceUtil::Mutex::Lock lock(*this);
-
- //
- // If there is an outstanding request in the request queue,
- // send a response. Otherwise add the message to the message
- // queue.
- //
- if(_requestQueue.size() != 0)
- {
- try
- {
- _requestQueue.front().cb->ice_response(message);
- }
- catch(const Ice::Exception& ex)
- {
- _messageQueue.push_back(message);
- cout << ex << endl;
- }
- _requestQueue.pop_front();
- }
- else
- {
- _messageQueue.push_back(message);
- }
-}
-
-void
-QueueI::cancel_async(const Demo::AMD_Queue_cancelPtr& cb, const vector<string>& ids, const Ice::Current&)
-{
- //
- // We send immediate response so that later call to ice_exception
- // on queued requests will not cause deadlocks.
- //
- cb->ice_response();
-
- IceUtil::Mutex::Lock lock(*this);
-
- for(vector<string>::const_iterator p = ids.begin(); p != ids.end(); ++p)
- {
- for(list<Request>::iterator q = _requestQueue.begin(); q != _requestQueue.end(); )
- {
- if((*q).id == *p)
- {
- try
- {
- (*q).cb->ice_exception(Demo::RequestCanceledException());
- }
- catch(const Ice::Exception&)
- {
- // Ignore
- }
- list<Request>::iterator erase = q++;
- _requestQueue.erase(erase);
- break;
- }
- else
- {
- ++q;
- }
-
- }
- }
-}