diff options
author | Gordon Sim <gsim@apache.org> | 2006-12-05 13:14:38 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2006-12-05 13:14:38 +0000 |
commit | 46fb2ad9fbc3694e2a321417ecd839badd7b106e (patch) | |
tree | dde3c1f64dedb99402f69e34b02d1ba875c962aa /cpp/lib/broker/BrokerMessage.cpp | |
parent | 7107d5c1c3c8323d832184fc097a5d9223633d32 (diff) | |
download | qpid-python-46fb2ad9fbc3694e2a321417ecd839badd7b106e.tar.gz |
Added queue policy class for controlling when message content should be released from memory.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@482639 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/lib/broker/BrokerMessage.cpp')
-rw-r--r-- | cpp/lib/broker/BrokerMessage.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/cpp/lib/broker/BrokerMessage.cpp b/cpp/lib/broker/BrokerMessage.cpp index 50bf319797..d30cd12bc3 100644 --- a/cpp/lib/broker/BrokerMessage.cpp +++ b/cpp/lib/broker/BrokerMessage.cpp @@ -32,6 +32,7 @@ using namespace boost; using namespace qpid::broker; using namespace qpid::framing; +using namespace qpid::sys; Message::Message(const ConnectionToken* const _publisher, const string& _exchange, const string& _routingKey, @@ -100,6 +101,7 @@ void Message::sendContent(OutputHandler* out, int channel, u_int32_t framesize){ AMQBody::shared_ptr headerBody = static_pointer_cast<AMQBody, AMQHeaderBody>(header); out->send(new AMQFrame(channel, headerBody)); + Mutex::ScopedLock locker(contentLock); if (content.get()) content->send(out, channel, framesize); } @@ -173,6 +175,7 @@ void Message::encodeHeader(Buffer& buffer) void Message::encodeContent(Buffer& buffer) { + Mutex::ScopedLock locker(contentLock); if (content.get()) content->encode(buffer); } @@ -183,6 +186,7 @@ u_int32_t Message::encodedSize() u_int32_t Message::encodedContentSize() { + Mutex::ScopedLock locker(contentLock); return content.get() ? content->size() : 0; } @@ -200,6 +204,7 @@ u_int64_t Message::expectedContentSize() void Message::releaseContent(MessageStore* store) { + Mutex::ScopedLock locker(contentLock); if (!content.get() || content->size() > 0) { //set content to lazy loading mode (but only if there is stored content): @@ -212,5 +217,6 @@ void Message::releaseContent(MessageStore* store) void Message::setContent(std::auto_ptr<Content>& _content) { + Mutex::ScopedLock locker(contentLock); content = _content; } |