diff options
| author | Alan Conway <aconway@apache.org> | 2007-04-05 21:23:14 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2007-04-05 21:23:14 +0000 |
| commit | 70da584bd2e48bd56320f7ca1f6e94dfa430596d (patch) | |
| tree | 2fdb00461a0e0e28fa72a549259eafb9e6203142 /cpp/src/broker | |
| parent | bb79efff2408de5f6cd66089cde8b8a82cc80cc2 (diff) | |
| download | qpid-python-70da584bd2e48bd56320f7ca1f6e94dfa430596d.tar.gz | |
* cpp/src/broker/BrokerMessageMessage.h: Change reference from weak_ptr to
shared_ptr. Broker messages hold their reference.
* cpp/src/broker/Reference.cpp (close): clear messages array to break
shared_ptr cycle and avoid a leak.
* cpp/src/client/MessageMessageChannel.cpp (publish): Support references
for large messages.
* cpp/src/shared_ptr.h (make_shared_ptr): added deleter variant.
* cpp/src/tests/ClientChannelTest.cpp: Enabled testGetNoContent,
testGetFragmentedMessage
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@525964 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/broker')
| -rw-r--r-- | cpp/src/broker/BrokerMessageMessage.cpp | 2 | ||||
| -rw-r--r-- | cpp/src/broker/BrokerMessageMessage.h | 2 | ||||
| -rw-r--r-- | cpp/src/broker/Reference.cpp | 1 |
3 files changed, 3 insertions, 2 deletions
diff --git a/cpp/src/broker/BrokerMessageMessage.cpp b/cpp/src/broker/BrokerMessageMessage.cpp index d8eb0fada0..e34cd61f6c 100644 --- a/cpp/src/broker/BrokerMessageMessage.cpp +++ b/cpp/src/broker/BrokerMessageMessage.cpp @@ -312,7 +312,7 @@ MessageTransferBody* MessageMessage::copyTransfer(const ProtocolVersion& version } MessageMessage::ReferencePtr MessageMessage::getReference() const { - return reference.lock(); + return reference; } diff --git a/cpp/src/broker/BrokerMessageMessage.h b/cpp/src/broker/BrokerMessageMessage.h index 31962d5879..976b882c7e 100644 --- a/cpp/src/broker/BrokerMessageMessage.h +++ b/cpp/src/broker/BrokerMessageMessage.h @@ -93,7 +93,7 @@ class MessageMessage: public Message{ framing::RequestId requestId; const TransferPtr transfer; - const boost::weak_ptr<Reference> reference; + const boost::shared_ptr<Reference> reference; }; }} diff --git a/cpp/src/broker/Reference.cpp b/cpp/src/broker/Reference.cpp index ef55d3e6a2..1ef2eb44d0 100644 --- a/cpp/src/broker/Reference.cpp +++ b/cpp/src/broker/Reference.cpp @@ -46,6 +46,7 @@ void Reference::append(AppendPtr ptr) { } void Reference::close() { + messages.clear(); registry->references.erase(getId()); } |
