summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorCarl C. Trieloff <cctrieloff@apache.org>2008-12-30 02:32:22 +0000
committerCarl C. Trieloff <cctrieloff@apache.org>2008-12-30 02:32:22 +0000
commitb257c3e248e2a7a66109d66a6bb1e120fd8f05a0 (patch)
treef0dd7f3909f399f7a47440a7fb37ddd50bf0352f /cpp/src
parentea15af2679ac23c5e804823c89007774f416981c (diff)
downloadqpid-python-b257c3e248e2a7a66109d66a6bb1e120fd8f05a0.tar.gz
- browse correction, to update replacement message on browse
- correct stats for lvq messages git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@730031 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/qpid/broker/Queue.cpp8
-rw-r--r--cpp/src/tests/QueueTest.cpp5
2 files changed, 13 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp
index 418722f40b..de30c45acd 100644
--- a/cpp/src/qpid/broker/Queue.cpp
+++ b/cpp/src/qpid/broker/Queue.cpp
@@ -308,6 +308,10 @@ bool Queue::browseNextMessage(QueuedMessage& m, Consumer::shared_ptr c)
c->position = msg.position;
m = msg;
if (!lastValueQueueNoBrowse) clearLVQIndex(msg);
+ if (lastValueQueue) {
+ boost::intrusive_ptr<Message> replacement = msg.payload->getReplacementMessage(this);
+ if (replacement.get()) m.payload = replacement;
+ }
return true;
} else {
//browser hasn't got enough credit for the message
@@ -511,6 +515,10 @@ void Queue::push(boost::intrusive_ptr<Message>& msg){
lvq[key] = msg;
}else {
i->second->setReplacementMessage(msg,this);
+ if (mgmtObject != 0) {
+ mgmtObject->inc_msgTotalDequeues();
+ mgmtObject->inc_byteTotalDequeues(msg->contentSize());
+ }
}
}else {
messages.push_back(qm);
diff --git a/cpp/src/tests/QueueTest.cpp b/cpp/src/tests/QueueTest.cpp
index 4d1de64180..f1771e26cd 100644
--- a/cpp/src/tests/QueueTest.cpp
+++ b/cpp/src/tests/QueueTest.cpp
@@ -417,6 +417,11 @@ QPID_AUTO_TEST_CASE(testLVQAcquire){
queue->deliver(msg6);
BOOST_CHECK_EQUAL(queue->getMessageCount(), 3u);
+
+ intrusive_ptr<Message> received;
+ received = queue->get().payload;
+ BOOST_CHECK_EQUAL(msg4.get(), received.get());
+
}
QPID_AUTO_TEST_CASE(testLVQMultiQueue){