diff options
author | Gordon Sim <gsim@apache.org> | 2009-08-19 17:59:25 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2009-08-19 17:59:25 +0000 |
commit | 8ac3bbdc71bae7d2588b97300208842ea9e0b8c4 (patch) | |
tree | 369dd5daa8155ebfdb13f07eeade1e3bc1904374 /cpp/src | |
parent | 032f8961cb3f7de656fa798cd36cbc2d7fa5cbfb (diff) | |
download | qpid-python-8ac3bbdc71bae7d2588b97300208842ea9e0b8c4.tar.gz |
QPID-2058: Add a flag to the version of SessionImpl::send() that takes a FrameSet as content. This flag indicates whether the frames in that frame set are valid for sending over the connection or whether they should be reframed.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@805904 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/qpid/client/SessionImpl.cpp | 4 | ||||
-rw-r--r-- | cpp/src/qpid/client/SessionImpl.h | 10 | ||||
-rw-r--r-- | cpp/src/qpid/cluster/UpdateClient.cpp | 2 |
3 files changed, 12 insertions, 4 deletions
diff --git a/cpp/src/qpid/client/SessionImpl.cpp b/cpp/src/qpid/client/SessionImpl.cpp index 43b62ec6dc..a617335370 100644 --- a/cpp/src/qpid/client/SessionImpl.cpp +++ b/cpp/src/qpid/client/SessionImpl.cpp @@ -319,7 +319,7 @@ struct MethodContentAdaptor : MethodContent } -Future SessionImpl::send(const AMQBody& command, const FrameSet& content) { +Future SessionImpl::send(const AMQBody& command, const FrameSet& content, bool reframe) { Acquire a(sendLock); SequenceNumber id = nextOut++; { @@ -337,7 +337,7 @@ Future SessionImpl::send(const AMQBody& command, const FrameSet& content) { frame.setEof(false); handleOut(frame); - if (content.isComplete()) { + if (reframe) { MethodContentAdaptor c(content); sendContent(c); } else { diff --git a/cpp/src/qpid/client/SessionImpl.h b/cpp/src/qpid/client/SessionImpl.h index cae1148e9f..b5bb18cfe6 100644 --- a/cpp/src/qpid/client/SessionImpl.h +++ b/cpp/src/qpid/client/SessionImpl.h @@ -86,7 +86,15 @@ public: Future send(const framing::AMQBody& command); Future send(const framing::AMQBody& command, const framing::MethodContent& content); - Future send(const framing::AMQBody& command, const framing::FrameSet& content); + /** + * This method takes the content as a FrameSet; if reframe=false, + * the caller is resposnible for ensuring that the header and + * content frames in that set are correct for this connection + * (right flags, right fragmentation etc). If reframe=true, then + * the header and content from the frameset will be copied and + * reframed correctly for the connection. + */ + Future send(const framing::AMQBody& command, const framing::FrameSet& content, bool reframe=false); void sendRawFrame(framing::AMQFrame& frame); Demux& getDemux(); diff --git a/cpp/src/qpid/cluster/UpdateClient.cpp b/cpp/src/qpid/cluster/UpdateClient.cpp index ac418ffbb6..2e557f2ab6 100644 --- a/cpp/src/qpid/cluster/UpdateClient.cpp +++ b/cpp/src/qpid/cluster/UpdateClient.cpp @@ -213,7 +213,7 @@ class MessageUpdater { framing::MessageTransferBody transfer( framing::ProtocolVersion(), UpdateClient::UPDATE, message::ACCEPT_MODE_NONE, message::ACQUIRE_MODE_PRE_ACQUIRED); - sb.get()->send(transfer, message.payload->getFrames()); + sb.get()->send(transfer, message.payload->getFrames(), !message.payload->isContentReleased()); if (message.payload->isContentReleased()){ uint16_t maxFrameSize = sb.get()->getConnection()->getNegotiatedSettings().maxFrameSize; uint16_t maxContentSize = maxFrameSize - AMQFrame::frameOverhead(); |