diff options
| author | Alan Conway <aconway@apache.org> | 2007-04-03 18:50:43 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2007-04-03 18:50:43 +0000 |
| commit | 4336a5575fbf984a58dcbd0564463843e615a7c7 (patch) | |
| tree | 1c9a26c2a018662a6f382bd303b3fa116f101c50 /cpp/src/broker/BrokerMessageMessage.h | |
| parent | e50363a432201734aa8ee03ee62ad553e6b68bfe (diff) | |
| download | qpid-python-4336a5575fbf984a58dcbd0564463843e615a7c7.tar.gz | |
* cpp/src/broker/Broker.cpp: Join cleaner thread.
* cpp/src/broker/BrokerMessageMessage.h, .cpp, ReferenceTest:
- Broke reference cycle between broker::MessageMessage and Reference
by using a weak_ptr in MessageMessage
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@525244 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/broker/BrokerMessageMessage.h')
| -rw-r--r-- | cpp/src/broker/BrokerMessageMessage.h | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/cpp/src/broker/BrokerMessageMessage.h b/cpp/src/broker/BrokerMessageMessage.h index 88ac07ecc3..31962d5879 100644 --- a/cpp/src/broker/BrokerMessageMessage.h +++ b/cpp/src/broker/BrokerMessageMessage.h @@ -24,7 +24,7 @@ #include "BrokerMessageBase.h" #include "MessageTransferBody.h" #include "../framing/amqp_types.h" - +#include <boost/weak_ptr.hpp> #include <vector> namespace qpid { @@ -42,16 +42,16 @@ class MessageMessage: public Message{ typedef boost::shared_ptr<MessageMessage> shared_ptr; typedef boost::shared_ptr<framing::MessageTransferBody> TransferPtr; typedef boost::shared_ptr<Reference> ReferencePtr; - + MessageMessage(ConnectionToken* publisher, framing::RequestId, TransferPtr transfer); MessageMessage(ConnectionToken* publisher, framing::RequestId, TransferPtr transfer, ReferencePtr reference); MessageMessage(); // Default destructor okay - framing::RequestId getRequestId() {return requestId; } - TransferPtr getTransfer() { return transfer; } - ReferencePtr getReference() { return reference; } + framing::RequestId getRequestId() const {return requestId; } + TransferPtr getTransfer() const { return transfer; } + ReferencePtr getReference() const ; void deliver(framing::ChannelAdapter& channel, const std::string& consumerTag, @@ -81,16 +81,19 @@ class MessageMessage: public Message{ void decodeContent(framing::Buffer& buffer, uint32_t contentChunkSize = 0); private: - void transferMessage(framing::ChannelAdapter& channel, - const std::string& consumerTag, - uint32_t framesize); - framing::MessageTransferBody* copyTransfer(const framing::ProtocolVersion& version, - const std::string& destination, - const framing::Content& body) const; + void transferMessage( + framing::ChannelAdapter& channel, + const std::string& consumerTag, + uint32_t framesize); + + framing::MessageTransferBody* copyTransfer( + const framing::ProtocolVersion& version, + const std::string& destination, + const framing::Content& body) const; framing::RequestId requestId; const TransferPtr transfer; - const ReferencePtr reference; + const boost::weak_ptr<Reference> reference; }; }} |
