From 364b62744a35f7e48332af00217a1848345cd39a Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Thu, 30 Oct 2008 21:07:28 +0000 Subject: Replicate session state for un-acknowledged messages to new cluster members. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@709242 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/broker/Queue.cpp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) (limited to 'cpp/src/qpid/broker/Queue.cpp') diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp index 968720050d..388b2d77dd 100644 --- a/cpp/src/qpid/broker/Queue.cpp +++ b/cpp/src/qpid/broker/Queue.cpp @@ -380,15 +380,12 @@ struct PositionEquals { }; }// namespace -bool Queue::find(QueuedMessage& msg, SequenceNumber pos) const { +QueuedMessage Queue::find(SequenceNumber pos) const { Mutex::ScopedLock locker(messageLock); Messages::const_iterator i = std::find_if(messages.begin(), messages.end(), PositionEquals(pos)); - if (i == messages.end()) - return false; - else { - msg = *i; - return true; - } + if (i != messages.end()) + return *i; + return QueuedMessage(); } void Queue::consume(Consumer::shared_ptr c, bool requestExclusive){ @@ -876,9 +873,6 @@ Manageable::status_t Queue::ManagementMethod (uint32_t methodId, Args& args, str } void Queue::setPosition(SequenceNumber n) { - if (n <= sequence) - throw InvalidArgumentException(QPID_MSG("Invalid position " << n << " < " << sequence - << " for queue " << name)); + Mutex::ScopedLock locker(messageLock); sequence = n; - --sequence; // Decrement so ++sequence will return n. } -- cgit v1.2.1