summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/PersistableMessage.h
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-11-06 17:23:30 +0000
committerAlan Conway <aconway@apache.org>2008-11-06 17:23:30 +0000
commit970321b5c80f45808febad427301f0f7b6d2ea5c (patch)
tree531d4f1e10c7240b53e5bb37658a0ad67069dbc4 /cpp/src/qpid/broker/PersistableMessage.h
parent53aed86fbaeb2b1de2ea38d2826d6bc7318f300a (diff)
downloadqpid-python-970321b5c80f45808febad427301f0f7b6d2ea5c.tar.gz
Correct excessive use of inline functions in PersistableMessage.h.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@711915 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/PersistableMessage.h')
-rw-r--r--cpp/src/qpid/broker/PersistableMessage.h125
1 files changed, 27 insertions, 98 deletions
diff --git a/cpp/src/qpid/broker/PersistableMessage.h b/cpp/src/qpid/broker/PersistableMessage.h
index 7ed54c0ff0..6b6e9a7007 100644
--- a/cpp/src/qpid/broker/PersistableMessage.h
+++ b/cpp/src/qpid/broker/PersistableMessage.h
@@ -41,6 +41,7 @@ class MessageStore;
*/
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 @@ class PersistableMessage : public Persistable
* 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 @@ public:
*/
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() {
-
- 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++;
- }
+ void waitForEnqueueComplete();
+ 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();
};
}}