diff options
author | Gordon Sim <gsim@apache.org> | 2006-12-06 17:51:42 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2006-12-06 17:51:42 +0000 |
commit | f2d0f0cfbfebb082e92f28b8d1b2987a0f20acf6 (patch) | |
tree | d71e0a7854dcfbef75040ee426b53f6369e0cc7a /cpp/lib/broker/BrokerMessage.cpp | |
parent | f8c692d37104a95ad245402ffe0d7d6b7c4ea816 (diff) | |
download | qpid-python-f2d0f0cfbfebb082e92f28b8d1b2987a0f20acf6.tar.gz |
Allow non-durable messages to be lazy-loaded. Cleanup of lazy-loaded messages
that are never enqueued.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@483165 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/lib/broker/BrokerMessage.cpp')
-rw-r--r-- | cpp/lib/broker/BrokerMessage.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/cpp/lib/broker/BrokerMessage.cpp b/cpp/lib/broker/BrokerMessage.cpp index d30cd12bc3..598de2d590 100644 --- a/cpp/lib/broker/BrokerMessage.cpp +++ b/cpp/lib/broker/BrokerMessage.cpp @@ -53,7 +53,9 @@ Message::Message(Buffer& buffer, bool headersOnly, u_int32_t contentChunkSize) : Message::Message() : publisher(0), mandatory(false), immediate(false), redelivered(false), size(0), persistenceId(0){} -Message::~Message(){} +Message::~Message(){ + if (content.get()) content->destroy(); +} void Message::setHeader(AMQHeaderBody::shared_ptr _header){ this->header = _header; @@ -205,6 +207,9 @@ u_int64_t Message::expectedContentSize() void Message::releaseContent(MessageStore* store) { Mutex::ScopedLock locker(contentLock); + if (!isPersistent() && persistenceId == 0) { + store->stage(this); + } if (!content.get() || content->size() > 0) { //set content to lazy loading mode (but only if there is stored content): |