From 0637677cf6653256b67c82dcb74f35133601220c Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Sun, 20 Apr 2008 12:10:37 +0000 Subject: QPID-920: converted c++ client to use final 0-10 protocol * connection handler converted to using invoker & proxy and updated to final method defs * SessionCore & ExecutionHandler replace by SessionImpl * simplified handling of completion & results, removed handling of responses git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@649915 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/client/SessionBase.cpp | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'cpp/src/qpid/client/SessionBase.cpp') diff --git a/cpp/src/qpid/client/SessionBase.cpp b/cpp/src/qpid/client/SessionBase.cpp index 0e1fa67bda..d6a7571e9f 100644 --- a/cpp/src/qpid/client/SessionBase.cpp +++ b/cpp/src/qpid/client/SessionBase.cpp @@ -19,6 +19,7 @@ * */ #include "SessionBase.h" +#include "qpid/framing/all_method_bodies.h" namespace qpid { namespace client { @@ -26,7 +27,7 @@ using namespace framing; SessionBase::SessionBase() {} SessionBase::~SessionBase() {} -SessionBase::SessionBase(shared_ptr core) : impl(core) {} +SessionBase::SessionBase(shared_ptr core) : impl(core) {} void SessionBase::suspend() { impl->suspend(); } void SessionBase::close() { impl->close(); } @@ -37,14 +38,30 @@ SynchronousMode SessionBase::getSynchronous() const { return SynchronousMode(impl->isSync()); } -Execution& SessionBase::getExecution() { return impl->getExecution(); } +Execution& SessionBase::getExecution() +{ + return *impl; +} + +void SessionBase::sync() +{ + ExecutionSyncBody b; + b.setSync(true); + impl->send(b).wait(*impl); +} + Uuid SessionBase::getId() const { return impl->getId(); } framing::FrameSet::shared_ptr SessionBase::get() { return impl->get(); } -void SessionBase::sync() { - Execution& ex = getExecution(); - ex.syncWait(ex.lastSent()); - impl->assertOpen(); +SessionBase::ScopedSync::ScopedSync(SessionBase& s) : session(s), change(!s.isSynchronous()) +{ + if (change) session.setSynchronous(true); } +SessionBase::ScopedSync::~ScopedSync() +{ + if (change) session.setSynchronous(false); +} + + }} // namespace qpid::client -- cgit v1.2.1