You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2008/11/06 18:23:57 UTC
svn commit: r711915 - in /incubator/qpid/trunk/qpid/cpp/src/qpid/broker:
PersistableMessage.cpp PersistableMessage.h
Author: aconway
Date: Thu Nov 6 09:23:30 2008
New Revision: 711915
URL: http://svn.apache.org/viewvc?rev=711915&view=rev
Log:
Correct excessive use of inline functions in PersistableMessage.h.
Modified:
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableMessage.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableMessage.h
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableMessage.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableMessage.cpp?rev=711915&r1=711914&r2=711915&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableMessage.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableMessage.cpp Thu Nov 6 09:23:30 2008
@@ -26,6 +26,20 @@
using namespace qpid::broker;
+namespace qpid {
+namespace broker {
+
+class MessageStore;
+
+PersistableMessage::~PersistableMessage() {}
+
+PersistableMessage::PersistableMessage() :
+ asyncEnqueueCounter(0),
+ asyncDequeueCounter(0),
+ contentReleased(false),
+ store(0)
+{}
+
void PersistableMessage::flush()
{
syncList copy;
@@ -45,4 +59,96 @@
}
}
+void PersistableMessage::setContentReleased() {contentReleased = true; }
+
+bool PersistableMessage::isContentReleased()const { return contentReleased; }
+
+void PersistableMessage::waitForEnqueueComplete() {
+ sys::ScopedLock<sys::Monitor> l(asyncEnqueueLock);
+ while (asyncEnqueueCounter > 0) {
+ asyncEnqueueLock.wait();
+ }
+}
+
+bool PersistableMessage::isEnqueueComplete() {
+ sys::ScopedLock<sys::Monitor> l(asyncEnqueueLock);
+ return asyncEnqueueCounter == 0;
+}
+
+void PersistableMessage::enqueueComplete() {
+ bool notify = false;
+ {
+ sys::ScopedLock<sys::Monitor> l(asyncEnqueueLock);
+ if (asyncEnqueueCounter > 0) {
+ if (--asyncEnqueueCounter == 0) {
+ asyncEnqueueLock.notify();
+ notify = true;
+ }
+ }
+ }
+ if (notify) {
+ sys::ScopedLock<sys::Mutex> l(storeLock);
+ if (store) {
+ for (syncList::iterator i = synclist.begin(); i != synclist.end(); ++i) {
+ PersistableQueue::shared_ptr q(i->lock());
+ if (q) q->notifyDurableIOComplete();
+ }
+ }
+ }
+}
+
+void PersistableMessage::enqueueAsync(PersistableQueue::shared_ptr queue, MessageStore* _store) {
+ if (_store){
+ sys::ScopedLock<sys::Mutex> l(storeLock);
+ store = _store;
+ boost::weak_ptr<PersistableQueue> q(queue);
+ synclist.push_back(q);
+ }
+ enqueueAsync();
+}
+
+void PersistableMessage::enqueueAsync() {
+ sys::ScopedLock<sys::Monitor> l(asyncEnqueueLock);
+ asyncEnqueueCounter++;
+}
+
+bool PersistableMessage::isDequeueComplete() {
+ sys::ScopedLock<sys::Monitor> l(asyncDequeueLock);
+ return asyncDequeueCounter == 0;
+}
+void PersistableMessage::dequeueComplete() {
+
+ sys::ScopedLock<sys::Monitor> l(asyncDequeueLock);
+ if (asyncDequeueCounter > 0) {
+ if (--asyncDequeueCounter == 0) {
+ asyncDequeueLock.notify();
+ }
+ }
+}
+
+void PersistableMessage::waitForDequeueComplete() {
+ sys::ScopedLock<sys::Monitor> l(asyncDequeueLock);
+ while (asyncDequeueCounter > 0) {
+ asyncDequeueLock.wait();
+ }
+}
+
+void PersistableMessage::dequeueAsync(PersistableQueue::shared_ptr queue, MessageStore* _store) {
+ if (_store){
+ sys::ScopedLock<sys::Mutex> l(storeLock);
+ store = _store;
+ boost::weak_ptr<PersistableQueue> q(queue);
+ synclist.push_back(q);
+ }
+ dequeueAsync();
+}
+
+void PersistableMessage::dequeueAsync() {
+ sys::ScopedLock<sys::Monitor> l(asyncDequeueLock);
+ asyncDequeueCounter++;
+}
+
+}}
+
+
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableMessage.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableMessage.h?rev=711915&r1=711914&r2=711915&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableMessage.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableMessage.h Thu Nov 6 09:23:30 2008
@@ -41,6 +41,7 @@
*/
class PersistableMessage : public Persistable
{
+ typedef std::list< boost::weak_ptr<PersistableQueue> > syncList;
sys::Monitor asyncEnqueueLock;
sys::Monitor asyncDequeueLock;
sys::Mutex storeLock;
@@ -62,15 +63,16 @@
* dequeues.
*/
int asyncDequeueCounter;
-protected:
- typedef std::list< boost::weak_ptr<PersistableQueue> > syncList;
+
+ bool contentReleased;
syncList synclist;
+
+ protected:
MessageStore* store;
- bool contentReleased;
- inline void setContentReleased() {contentReleased = true; }
+ void setContentReleased();
-public:
+ public:
typedef boost::shared_ptr<PersistableMessage> shared_ptr;
/**
@@ -78,106 +80,33 @@
*/
virtual uint32_t encodedHeaderSize() const = 0;
- virtual ~PersistableMessage() {};
+ virtual ~PersistableMessage();
- PersistableMessage():
- asyncEnqueueCounter(0),
- asyncDequeueCounter(0),
- store(0),
- contentReleased(false)
- {}
+ PersistableMessage();
void flush();
- inline bool isContentReleased()const {return contentReleased; }
+ bool isContentReleased() const;
- inline void waitForEnqueueComplete() {
- sys::ScopedLock<sys::Monitor> l(asyncEnqueueLock);
- while (asyncEnqueueCounter > 0) {
- asyncEnqueueLock.wait();
- }
- }
-
- inline bool isEnqueueComplete() {
- sys::ScopedLock<sys::Monitor> l(asyncEnqueueLock);
- return asyncEnqueueCounter == 0;
- }
-
- inline void enqueueComplete() {
- bool notify = false;
- {
- sys::ScopedLock<sys::Monitor> l(asyncEnqueueLock);
- if (asyncEnqueueCounter > 0) {
- if (--asyncEnqueueCounter == 0) {
- asyncEnqueueLock.notify();
- notify = true;
- }
- }
- }
- if (notify) {
- sys::ScopedLock<sys::Mutex> l(storeLock);
- if (store) {
- for (syncList::iterator i = synclist.begin(); i != synclist.end(); ++i) {
- PersistableQueue::shared_ptr q(i->lock());
- if (q) q->notifyDurableIOComplete();
- }
- }
- }
- }
-
- inline void enqueueAsync(PersistableQueue::shared_ptr queue, MessageStore* _store) {
- if (_store){
- sys::ScopedLock<sys::Mutex> l(storeLock);
- store = _store;
- boost::weak_ptr<PersistableQueue> q(queue);
- synclist.push_back(q);
- }
- enqueueAsync();
- }
-
- inline void enqueueAsync() {
- sys::ScopedLock<sys::Monitor> l(asyncEnqueueLock);
- asyncEnqueueCounter++;
- }
-
- inline bool isDequeueComplete() {
- sys::ScopedLock<sys::Monitor> l(asyncDequeueLock);
- return asyncDequeueCounter == 0;
- }
-
- inline void dequeueComplete() {
+ void waitForEnqueueComplete();
- sys::ScopedLock<sys::Monitor> l(asyncDequeueLock);
- if (asyncDequeueCounter > 0) {
- if (--asyncDequeueCounter == 0) {
- asyncDequeueLock.notify();
- }
- }
- }
-
- inline void waitForDequeueComplete() {
- sys::ScopedLock<sys::Monitor> l(asyncDequeueLock);
- while (asyncDequeueCounter > 0) {
- asyncDequeueLock.wait();
- }
- }
-
- inline void dequeueAsync(PersistableQueue::shared_ptr queue, MessageStore* _store) {
- if (_store){
- sys::ScopedLock<sys::Mutex> l(storeLock);
- store = _store;
- boost::weak_ptr<PersistableQueue> q(queue);
- synclist.push_back(q);
- }
- dequeueAsync();
- }
-
- inline void dequeueAsync() {
- sys::ScopedLock<sys::Monitor> l(asyncDequeueLock);
- asyncDequeueCounter++;
- }
+ bool isEnqueueComplete();
+ void enqueueComplete();
+
+ void enqueueAsync(PersistableQueue::shared_ptr queue, MessageStore* _store);
+
+ void enqueueAsync();
+
+ bool isDequeueComplete();
+ void dequeueComplete();
+
+ void waitForDequeueComplete();
+
+ void dequeueAsync(PersistableQueue::shared_ptr queue, MessageStore* _store);
+
+ void dequeueAsync();
};
}}