You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2007/03/08 20:43:12 UTC
svn commit: r516157 - in /incubator/qpid/branches/qpid.0-9: ./
cpp/lib/broker/BrokerMessageMessage.cpp python/cpp_failing.txt
Author: astitcher
Date: Thu Mar 8 11:43:09 2007
New Revision: 516157
URL: http://svn.apache.org/viewvc?view=rev&rev=516157
Log:
r1278@fuschia: andrew | 2007-03-08 19:42:43 +0000
Correctly split reference messages into chunks shorter than
the framesize
Modified:
incubator/qpid/branches/qpid.0-9/ (props changed)
incubator/qpid/branches/qpid.0-9/cpp/lib/broker/BrokerMessageMessage.cpp
incubator/qpid/branches/qpid.0-9/python/cpp_failing.txt
Propchange: incubator/qpid/branches/qpid.0-9/
------------------------------------------------------------------------------
--- svk:merge (original)
+++ svk:merge Thu Mar 8 11:43:09 2007
@@ -1 +1 @@
-8427bd24-ae5a-4eba-a324-d2fc9c9c6c77:/local/qpid.0-9.ams:1242
+8427bd24-ae5a-4eba-a324-d2fc9c9c6c77:/local/qpid.0-9.ams:1278
Modified: incubator/qpid/branches/qpid.0-9/cpp/lib/broker/BrokerMessageMessage.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/cpp/lib/broker/BrokerMessageMessage.cpp?view=diff&rev=516157&r1=516156&r2=516157
==============================================================================
--- incubator/qpid/branches/qpid.0-9/cpp/lib/broker/BrokerMessageMessage.cpp (original)
+++ incubator/qpid/branches/qpid.0-9/cpp/lib/broker/BrokerMessageMessage.cpp Thu Mar 8 11:43:09 2007
@@ -61,6 +61,7 @@
reference(reference_)
{}
+// TODO: astitcher 1-Mar-2007: This code desperately needs better factoring
void MessageMessage::transferMessage(
framing::ChannelAdapter& channel,
const std::string& consumerTag,
@@ -76,7 +77,19 @@
for(Reference::Appends::const_iterator a = reference->getAppends().begin();
a != reference->getAppends().end();
++a) {
- channel.send(new MessageAppendBody(*a->get()));
+ u_int32_t sizeleft = (*a)->size();
+ const string& content = (*a)->getBytes();
+ // Calculate overhead bytes
+ // Assume that the overhead is constant as the reference name doesn't change
+ u_int32_t overhead = sizeleft - content.size();
+ string::size_type contentStart = 0;
+ while (sizeleft) {
+ string::size_type contentSize = sizeleft <= framesize ? sizeleft : framesize-overhead;
+ channel.send(new MessageAppendBody(channel.getVersion(), reference->getId(),
+ string(content, contentStart, contentSize)));
+ sizeleft -= contentSize;
+ contentStart += contentSize;
+ }
}
}
@@ -109,8 +122,7 @@
transfer->getMandatory()));
} else {
// Thing to do here is to construct a simple reference message then deliver that instead
- // fragmentmentation will be taken care of in the delivery
- // if necessary; problem is to invent a reference name to use
+ // fragmentation will be taken care of in the delivery if necessary;
string content = body.getValue();
string refname = "dummy";
TransferPtr newTransfer(
Modified: incubator/qpid/branches/qpid.0-9/python/cpp_failing.txt
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-9/python/cpp_failing.txt?view=diff&rev=516157&r1=516156&r2=516157
==============================================================================
--- incubator/qpid/branches/qpid.0-9/python/cpp_failing.txt (original)
+++ incubator/qpid/branches/qpid.0-9/python/cpp_failing.txt Thu Mar 8 11:43:09 2007
@@ -1,4 +1,3 @@
tests.message.MessageTests.test_checkpoint
-tests.message.MessageTests.test_reference_large
tests.message.MessageTests.test_reject
tests.basic.BasicTests.test_get