summaryrefslogtreecommitdiff
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
commitdf9a8924265ccd2d2b6ad64ee71890496b0e8179 (patch)
tree71fd392b566ca492a31114aaa1c537cd9a90cd82
parentf4b4eeb7ef451fd5e236890cd846f43f832147f9 (diff)
downloadqpid-python-df9a8924265ccd2d2b6ad64ee71890496b0e8179.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@730031 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/broker/Queue.cpp8
-rw-r--r--qpid/cpp/src/tests/QueueTest.cpp5
2 files changed, 13 insertions, 0 deletions
diff --git a/qpid/cpp/src/qpid/broker/Queue.cpp b/qpid/cpp/src/qpid/broker/Queue.cpp
index 418722f40b..de30c45acd 100644
--- a/qpid/cpp/src/qpid/broker/Queue.cpp
+++ b/qpid/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/qpid/cpp/src/tests/QueueTest.cpp b/qpid/cpp/src/tests/QueueTest.cpp
index 4d1de64180..f1771e26cd 100644
--- a/qpid/cpp/src/tests/QueueTest.cpp
+++ b/qpid/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){