diff options
author | Carl C. Trieloff <cctrieloff@apache.org> | 2008-12-30 02:32:22 +0000 |
---|---|---|
committer | Carl C. Trieloff <cctrieloff@apache.org> | 2008-12-30 02:32:22 +0000 |
commit | df9a8924265ccd2d2b6ad64ee71890496b0e8179 (patch) | |
tree | 71fd392b566ca492a31114aaa1c537cd9a90cd82 | |
parent | f4b4eeb7ef451fd5e236890cd846f43f832147f9 (diff) | |
download | qpid-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.cpp | 8 | ||||
-rw-r--r-- | qpid/cpp/src/tests/QueueTest.cpp | 5 |
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){ |