From df9a8924265ccd2d2b6ad64ee71890496b0e8179 Mon Sep 17 00:00:00 2001 From: "Carl C. Trieloff" Date: Tue, 30 Dec 2008 02:32:22 +0000 Subject: - 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 --- qpid/cpp/src/qpid/broker/Queue.cpp | 8 ++++++++ qpid/cpp/src/tests/QueueTest.cpp | 5 +++++ 2 files changed, 13 insertions(+) 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 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& 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 received; + received = queue->get().payload; + BOOST_CHECK_EQUAL(msg4.get(), received.get()); + } QPID_AUTO_TEST_CASE(testLVQMultiQueue){ -- cgit v1.2.1