diff options
Diffstat (limited to 'cpp/src/qpid/sys')
| -rw-r--r-- | cpp/src/qpid/sys/apr/LFSessionContext.cpp | 14 | ||||
| -rw-r--r-- | cpp/src/qpid/sys/apr/LFSessionContext.h | 5 |
2 files changed, 9 insertions, 10 deletions
diff --git a/cpp/src/qpid/sys/apr/LFSessionContext.cpp b/cpp/src/qpid/sys/apr/LFSessionContext.cpp index 0717dcc9ae..4e708fd747 100644 --- a/cpp/src/qpid/sys/apr/LFSessionContext.cpp +++ b/cpp/src/qpid/sys/apr/LFSessionContext.cpp @@ -62,7 +62,7 @@ void LFSessionContext::read(){ try{ while(frame.decode(in)){ QPID_LOG(debug, "RECV: " << frame); - handler->received(&frame); + handler->received(frame); } }catch(const std::exception& e){ QPID_LOG(error, e.what()); @@ -94,14 +94,12 @@ void LFSessionContext::write(){ if(!framesToWrite.empty()){ out.clear(); bool encoded(false); - AMQFrame* frame = framesToWrite.front(); - while(frame && out.available() >= frame->size()){ + while(!framesToWrite.empty() && out.available() >= framesToWrite.front().size()){ + AMQFrame& frame = framesToWrite.front(); encoded = true; - frame->encode(out); - QPID_LOG(debug, "SENT: " << *frame); - delete frame; + frame.encode(out); + QPID_LOG(debug, "SENT: " << frame); framesToWrite.pop(); - frame = framesToWrite.empty() ? 0 : framesToWrite.front(); } if(!encoded) THROW_QPID_ERROR(FRAMING_ERROR, "Could not write frame, too large for buffer."); out.flip(); @@ -118,7 +116,7 @@ void LFSessionContext::write(){ } } -void LFSessionContext::send(AMQFrame* frame){ +void LFSessionContext::send(AMQFrame& frame){ Mutex::ScopedLock l(writeLock); if(!closing){ framesToWrite.push(frame); diff --git a/cpp/src/qpid/sys/apr/LFSessionContext.h b/cpp/src/qpid/sys/apr/LFSessionContext.h index 5248d8f5bd..0ff80eccec 100644 --- a/cpp/src/qpid/sys/apr/LFSessionContext.h +++ b/cpp/src/qpid/sys/apr/LFSessionContext.h @@ -28,6 +28,7 @@ #include <apr_time.h> #include "qpid/framing/AMQFrame.h" +#include "qpid/framing/FrameHandler.h" #include "qpid/framing/Buffer.h" #include "qpid/sys/Monitor.h" #include "qpid/sys/Mutex.h" @@ -55,7 +56,7 @@ class LFSessionContext : public virtual qpid::sys::ConnectionOutputHandler apr_pollfd_t fd; - std::queue<qpid::framing::AMQFrame*> framesToWrite; + std::queue<qpid::framing::AMQFrame> framesToWrite; qpid::sys::Mutex writeLock; bool processing; @@ -66,7 +67,7 @@ class LFSessionContext : public virtual qpid::sys::ConnectionOutputHandler LFProcessor* const processor, bool debug = false); virtual ~LFSessionContext(); - virtual void send(qpid::framing::AMQFrame* frame); + virtual void send(framing::AMQFrame& frame); virtual void close(); void read(); void write(); |
