You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2009/06/11 01:38:18 UTC
svn commit: r783571 - /qpid/trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp
Author: gsim
Date: Wed Jun 10 23:38:18 2009
New Revision: 783571
URL: http://svn.apache.org/viewvc?rev=783571&view=rev
Log:
Ensure that messages sent by clusters update client are correctly fragmented based on the max frame size for the session.
Modified:
qpid/trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp
Modified: qpid/trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp?rev=783571&r1=783570&r2=783571&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp Wed Jun 10 23:38:18 2009
@@ -289,15 +289,24 @@
}
namespace {
-// Functor for FrameSet::map to send header + content frames but, not method frames.
-struct SendContentFn {
- FrameHandler& handler;
- void operator()(const AMQFrame& f) {
- if (!f.getMethod())
- handler(const_cast<AMQFrame&>(f));
+// Adaptor to make FrameSet look like MethodContent; used in cluster update client
+struct MethodContentAdaptor : MethodContent
+{
+ AMQHeaderBody header;
+ const std::string content;
+
+ MethodContentAdaptor(const FrameSet& f) : header(*f.getHeaders()), content(f.getContent()) {}
+
+ AMQHeaderBody getHeader() const
+ {
+ return header;
+ }
+ const std::string& getData() const
+ {
+ return content;
}
- SendContentFn(FrameHandler& h) : handler(h) {}
};
+
}
Future SessionImpl::send(const AMQBody& command, const FrameSet& content) {
@@ -318,8 +327,8 @@
frame.setEof(false);
handleOut(frame);
- SendContentFn send(out);
- content.map(send);
+ MethodContentAdaptor c(content);
+ sendContent(c);
return f;
}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org