From 8f0fd209fb0b31814fb7b1ff7a7271d1e3239cd3 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Mon, 7 Sep 2009 18:09:00 +0000 Subject: QPID-664: Added automatic message replay on reconnection. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@812243 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/messaging/MessageImpl.cpp | 13 +++++++++++++ cpp/src/qpid/messaging/MessageImpl.h | 2 ++ cpp/src/qpid/messaging/Sender.cpp | 2 +- cpp/src/qpid/messaging/SenderImpl.h | 2 +- 4 files changed, 17 insertions(+), 2 deletions(-) (limited to 'cpp/src/qpid/messaging') diff --git a/cpp/src/qpid/messaging/MessageImpl.cpp b/cpp/src/qpid/messaging/MessageImpl.cpp index 402a93e753..5df9218e03 100644 --- a/cpp/src/qpid/messaging/MessageImpl.cpp +++ b/cpp/src/qpid/messaging/MessageImpl.cpp @@ -126,6 +126,15 @@ void MessageImpl::encode(Codec& codec) } } +void MessageImpl::getEncodedContent(Codec& codec, std::string& out) const +{ + if (content.getType() != VAR_VOID) { + codec.encode(content, out); + } else { + out = bytes; + } +} + void MessageImpl::decode(Codec& codec) { codec.decode(bytes, content); @@ -188,5 +197,9 @@ MessageImpl& MessageImplAccess::get(Message& msg) { return *msg.impl; } +const MessageImpl& MessageImplAccess::get(const Message& msg) +{ + return *msg.impl; +} }} // namespace qpid::messaging diff --git a/cpp/src/qpid/messaging/MessageImpl.h b/cpp/src/qpid/messaging/MessageImpl.h index 3b8f103688..1173e7570a 100644 --- a/cpp/src/qpid/messaging/MessageImpl.h +++ b/cpp/src/qpid/messaging/MessageImpl.h @@ -84,6 +84,7 @@ struct MessageImpl : MessageContent void clear(); + void getEncodedContent(Codec& codec, std::string&) const; void encode(Codec& codec); void decode(Codec& codec); @@ -125,6 +126,7 @@ class Message; struct MessageImplAccess { static MessageImpl& get(Message&); + static const MessageImpl& get(const Message&); }; }} // namespace qpid::messaging diff --git a/cpp/src/qpid/messaging/Sender.cpp b/cpp/src/qpid/messaging/Sender.cpp index 12a3a8eb0f..8db700b060 100644 --- a/cpp/src/qpid/messaging/Sender.cpp +++ b/cpp/src/qpid/messaging/Sender.cpp @@ -38,7 +38,7 @@ Sender::Sender(SenderImpl* impl) { PI::ctor(*this, impl); } Sender::Sender(const Sender& s) : qpid::client::Handle() { PI::copy(*this, s); } Sender::~Sender() { PI::dtor(*this); } Sender& Sender::operator=(const Sender& s) { return PI::assign(*this, s); } -void Sender::send(Message& message) { impl->send(message); } +void Sender::send(const Message& message) { impl->send(message); } void Sender::cancel() { impl->cancel(); } }} // namespace qpid::messaging diff --git a/cpp/src/qpid/messaging/SenderImpl.h b/cpp/src/qpid/messaging/SenderImpl.h index 3b61a37423..77d2cfaeaf 100644 --- a/cpp/src/qpid/messaging/SenderImpl.h +++ b/cpp/src/qpid/messaging/SenderImpl.h @@ -35,7 +35,7 @@ class SenderImpl : public virtual qpid::RefCounted { public: virtual ~SenderImpl() {} - virtual void send(Message& message) = 0; + virtual void send(const Message& message) = 0; virtual void cancel() = 0; private: }; -- cgit v1.2.1