diff options
| author | Carl C. Trieloff <cctrieloff@apache.org> | 2007-11-06 19:43:54 +0000 |
|---|---|---|
| committer | Carl C. Trieloff <cctrieloff@apache.org> | 2007-11-06 19:43:54 +0000 |
| commit | 58787c964e568f363915844ee54f19b2b0f80940 (patch) | |
| tree | 49d4beacc8efb7424a9dee5e16b7f73ee41e02f4 /cpp | |
| parent | a2ded139f371d273afa858f49a5b7f6e0efc2394 (diff) | |
| download | qpid-python-58787c964e568f363915844ee54f19b2b0f80940.tar.gz | |
- clean up between base & subclasses
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@592530 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
| -rw-r--r-- | cpp/src/qpid/broker/Message.cpp | 7 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/Message.h | 2 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/MessageBuilder.cpp | 1 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/PersistableMessage.h | 9 |
4 files changed, 13 insertions, 6 deletions
diff --git a/cpp/src/qpid/broker/Message.cpp b/cpp/src/qpid/broker/Message.cpp index 5d572283ce..78d6cd3891 100644 --- a/cpp/src/qpid/broker/Message.cpp +++ b/cpp/src/qpid/broker/Message.cpp @@ -36,7 +36,7 @@ using std::string; TransferAdapter Message::TRANSFER; PublishAdapter Message::PUBLISH; -Message::Message(const SequenceNumber& id) : frames(id), persistenceId(0), redelivered(false), publisher(0), store(0), adapter(0) {} +Message::Message(const SequenceNumber& id) : frames(id), persistenceId(0), redelivered(false), publisher(0), adapter(0) {} std::string Message::getRoutingKey() const { @@ -131,12 +131,15 @@ void Message::decodeContent(framing::Buffer& buffer) void Message::releaseContent(MessageStore* _store) { - store = _store; + if (!store){ + store = _store; + } if (!getPersistenceId()) { store->stage(*this); } //remove any content frames from the frameset frames.remove(TypeFilter(CONTENT_BODY)); + setContentReleased(); } void Message::sendContent(framing::FrameHandler& out, uint16_t maxFrameSize) const diff --git a/cpp/src/qpid/broker/Message.h b/cpp/src/qpid/broker/Message.h index ac8e51a030..f9a3596a98 100644 --- a/cpp/src/qpid/broker/Message.h +++ b/cpp/src/qpid/broker/Message.h @@ -125,14 +125,12 @@ public: mutable uint64_t persistenceId; bool redelivered; ConnectionToken* publisher; - MessageStore* store; mutable MessageAdapter* adapter; static TransferAdapter TRANSFER; static PublishAdapter PUBLISH; MessageAdapter& getAdapter() const; - bool isContentReleased() const { return store; } }; }} diff --git a/cpp/src/qpid/broker/MessageBuilder.cpp b/cpp/src/qpid/broker/MessageBuilder.cpp index 84b3cbb2ac..e65db391b5 100644 --- a/cpp/src/qpid/broker/MessageBuilder.cpp +++ b/cpp/src/qpid/broker/MessageBuilder.cpp @@ -54,7 +54,6 @@ void MessageBuilder::handle(AMQFrame& frame) message->getFrames().append(frame); //have we reached the staging limit? if so stage message and release content if (state == CONTENT && stagingThreshold && message->getFrames().getContentSize() >= stagingThreshold) { - store->stage(*message); message->releaseContent(store); staging = true; } diff --git a/cpp/src/qpid/broker/PersistableMessage.h b/cpp/src/qpid/broker/PersistableMessage.h index d8bcc70a30..a63ca2a52b 100644 --- a/cpp/src/qpid/broker/PersistableMessage.h +++ b/cpp/src/qpid/broker/PersistableMessage.h @@ -66,6 +66,10 @@ protected: typedef std::list<PersistableQueue*> syncList; syncList synclist; MessageStore* store; + bool contentReleased; + + inline void setContentReleased() {contentReleased = true; } + public: typedef boost::shared_ptr<PersistableMessage> shared_ptr; @@ -79,11 +83,14 @@ public: PersistableMessage(): asyncEnqueueCounter(0), asyncDequeueCounter(0), - store(0) + store(0), + contentReleased(false) {} void flush(); + inline bool isContentReleased()const {return contentReleased; } + inline void waitForEnqueueComplete() { sys::ScopedLock<sys::Monitor> l(asyncEnqueueLock); while (asyncEnqueueCounter > 0) { |
