diff options
| author | Alan Conway <aconway@apache.org> | 2007-11-14 21:02:14 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2007-11-14 21:02:14 +0000 |
| commit | b7c4bf711917dc5ae07fafea32d9d530d2383735 (patch) | |
| tree | d187fc43d3d0a2153d1b8c2a5ab3e55261285e9d /cpp/src/qpid/broker/Queue.cpp | |
| parent | 30e952c5e9e7084eb70633a543034fbc897a22b8 (diff) | |
| download | qpid-python-b7c4bf711917dc5ae07fafea32d9d530d2383735.tar.gz | |
Replaced shared_ptr with intrusive_ptr for qpid::Broker::Message.
Gives 9% reduction in broker heap use (perftest --count 100000.)
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@595056 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/Queue.cpp')
| -rw-r--r-- | cpp/src/qpid/broker/Queue.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp index e6d79056cd..757f0aa62d 100644 --- a/cpp/src/qpid/broker/Queue.cpp +++ b/cpp/src/qpid/broker/Queue.cpp @@ -81,7 +81,7 @@ void Queue::notifyDurableIOComplete() } -void Queue::deliver(Message::shared_ptr& msg){ +void Queue::deliver(intrusive_ptr<Message>& msg){ if (msg->isImmediate() && getConsumerCount() == 0) { if (alternateExchange) { DeliverableMessage deliverable(msg); @@ -108,7 +108,7 @@ void Queue::deliver(Message::shared_ptr& msg){ } -void Queue::recover(Message::shared_ptr& msg){ +void Queue::recover(intrusive_ptr<Message>& msg){ push(msg); msg->enqueueComplete(); // mark the message as enqueued if (mgmtObject != 0) @@ -120,7 +120,7 @@ void Queue::recover(Message::shared_ptr& msg){ } } -void Queue::process(Message::shared_ptr& msg){ +void Queue::process(intrusive_ptr<Message>& msg){ uint32_t mask = management::MSG_MASK_TX; @@ -178,7 +178,7 @@ void Queue::flush(DispatchCompletion& completion) * the message, or if the queue is exclusive to a single connection * and has a single consumer (covers the JMS topic case). */ -bool Queue::exclude(Message::shared_ptr msg) +bool Queue::exclude(intrusive_ptr<Message> msg) { RWlock::ScopedWlock locker(consumerLock); if (exclusive) { @@ -373,7 +373,7 @@ void Queue::pop(){ messages.pop_front(); } -void Queue::push(Message::shared_ptr& msg){ +void Queue::push(intrusive_ptr<Message>& msg){ Mutex::ScopedLock locker(messageLock); messages.push_back(QueuedMessage(this, msg, ++sequence)); if (policy.get()) { @@ -412,7 +412,7 @@ bool Queue::canAutoDelete() const{ } // return true if store exists, -bool Queue::enqueue(TransactionContext* ctxt, Message::shared_ptr msg) +bool Queue::enqueue(TransactionContext* ctxt, intrusive_ptr<Message> msg) { if (msg->isPersistent() && store) { msg->enqueueAsync(this, store); //increment to async counter -- for message sent to more than one queue @@ -423,7 +423,7 @@ bool Queue::enqueue(TransactionContext* ctxt, Message::shared_ptr msg) } // return true if store exists, -bool Queue::dequeue(TransactionContext* ctxt, Message::shared_ptr msg) +bool Queue::dequeue(TransactionContext* ctxt, intrusive_ptr<Message> msg) { if (msg->isPersistent() && store) { msg->dequeueAsync(this, store); //increment to async counter -- for message sent to more than one queue |
