summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client/ResponseHandler.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2006-11-08 17:07:44 +0000
committerAlan Conway <aconway@apache.org>2006-11-08 17:07:44 +0000
commit5be658a8817b8092a7b53b116f622412a5d0aef6 (patch)
treebbee363911f47bad6abe245629cacba0ebf3b9be /cpp/src/qpid/client/ResponseHandler.cpp
parent85fef3d1e669b240deae82cdd353620667a85e08 (diff)
downloadqpid-python-5be658a8817b8092a7b53b116f622412a5d0aef6.tar.gz
More reorg to separate APR/posix code, work in progress.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@472545 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client/ResponseHandler.cpp')
-rw-r--r--cpp/src/qpid/client/ResponseHandler.cpp25
1 files changed, 10 insertions, 15 deletions
diff --git a/cpp/src/qpid/client/ResponseHandler.cpp b/cpp/src/qpid/client/ResponseHandler.cpp
index 16989e2c25..5d2e03c9d9 100644
--- a/cpp/src/qpid/client/ResponseHandler.cpp
+++ b/cpp/src/qpid/client/ResponseHandler.cpp
@@ -19,40 +19,35 @@
#include "qpid/sys/Monitor.h"
#include "qpid/QpidError.h"
-qpid::client::ResponseHandler::ResponseHandler() : waiting(false){
- monitor = new qpid::sys::Monitor();
-}
+using namespace qpid::sys;
-qpid::client::ResponseHandler::~ResponseHandler(){
- delete monitor;
-}
+qpid::client::ResponseHandler::ResponseHandler() : waiting(false){}
+
+qpid::client::ResponseHandler::~ResponseHandler(){}
bool qpid::client::ResponseHandler::validate(const qpid::framing::AMQMethodBody& expected){
return expected.match(response.get());
}
void qpid::client::ResponseHandler::waitForResponse(){
- monitor->acquire();
+ Monitor::ScopedLock l(monitor);
if(waiting){
- monitor->wait();
+ monitor.wait();
}
- monitor->release();
}
void qpid::client::ResponseHandler::signalResponse(qpid::framing::AMQMethodBody::shared_ptr _response){
response = _response;
- monitor->acquire();
+ Monitor::ScopedLock l(monitor);
waiting = false;
- monitor->notify();
- monitor->release();
+ monitor.notify();
}
void qpid::client::ResponseHandler::receive(const qpid::framing::AMQMethodBody& expected){
- monitor->acquire();
+ Monitor::ScopedLock l(monitor);
if(waiting){
- monitor->wait();
+ monitor.wait();
}
- monitor->release();
if(!validate(expected)){
THROW_QPID_ERROR(PROTOCOL_ERROR, "Protocol Error");
}