diff options
| author | Gordon Sim <gsim@apache.org> | 2010-01-12 12:02:38 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2010-01-12 12:02:38 +0000 |
| commit | f47385682d2e9a82d007481e2c6d171a68dffa5f (patch) | |
| tree | 272cc16ac4b05ce23aab1dd22fcd751c8dd6f3db /cpp/src/qpid | |
| parent | 0528688ee4f8831b05576e2448d0835d6375ee82 (diff) | |
| download | qpid-python-f47385682d2e9a82d007481e2c6d171a68dffa5f.tar.gz | |
QPID-664: Added some of the missing standard message headers. Added two new test utilities for sending and receiving with the new API (both still works in progress).
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@898296 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid')
| -rw-r--r-- | cpp/src/qpid/client/amqp0_10/IncomingMessages.cpp | 16 | ||||
| -rw-r--r-- | cpp/src/qpid/client/amqp0_10/OutgoingMessage.cpp | 12 | ||||
| -rw-r--r-- | cpp/src/qpid/messaging/Message.cpp | 17 | ||||
| -rw-r--r-- | cpp/src/qpid/messaging/MessageImpl.cpp | 14 | ||||
| -rw-r--r-- | cpp/src/qpid/messaging/MessageImpl.h | 6 |
5 files changed, 57 insertions, 8 deletions
diff --git a/cpp/src/qpid/client/amqp0_10/IncomingMessages.cpp b/cpp/src/qpid/client/amqp0_10/IncomingMessages.cpp index e66dc5915c..669ffd7e9a 100644 --- a/cpp/src/qpid/client/amqp0_10/IncomingMessages.cpp +++ b/cpp/src/qpid/client/amqp0_10/IncomingMessages.cpp @@ -264,22 +264,32 @@ void IncomingMessages::MessageTransfer::retrieve(qpid::messaging::Message* messa parent.retrieve(content, message); } + +namespace { +//TODO: unify conversion to and from 0-10 message that is currently +//split between IncomingMessages and OutgoingMessage +const std::string SUBJECT("subject"); +} + void populateHeaders(qpid::messaging::Message& message, const DeliveryProperties* deliveryProperties, const MessageProperties* messageProperties) { if (deliveryProperties) { - message.setSubject(deliveryProperties->getRoutingKey()); - //TODO: convert other delivery properties + message.setTtl(deliveryProperties->getTtl()); + message.setDurable(deliveryProperties->getDeliveryMode() == DELIVERY_MODE_PERSISTENT); + MessageImplAccess::get(message).redelivered = deliveryProperties->getRedelivered(); } if (messageProperties) { message.setContentType(messageProperties->getContentType()); if (messageProperties->hasReplyTo()) { message.setReplyTo(AddressResolution::convert(messageProperties->getReplyTo())); } + message.setSubject(messageProperties->getApplicationHeaders().getAsString(SUBJECT)); message.getHeaders().clear(); translate(messageProperties->getApplicationHeaders(), message.getHeaders()); - //TODO: convert other message properties + message.setCorrelationId(messageProperties->getCorrelationId()); + message.setUserId(messageProperties->getUserId()); } } diff --git a/cpp/src/qpid/client/amqp0_10/OutgoingMessage.cpp b/cpp/src/qpid/client/amqp0_10/OutgoingMessage.cpp index abd4f4c28c..4065a16c6d 100644 --- a/cpp/src/qpid/client/amqp0_10/OutgoingMessage.cpp +++ b/cpp/src/qpid/client/amqp0_10/OutgoingMessage.cpp @@ -25,6 +25,7 @@ #include "qpid/messaging/Address.h" #include "qpid/messaging/Message.h" #include "qpid/messaging/MessageImpl.h" +#include "qpid/framing/enum.h" namespace qpid { namespace client { @@ -32,20 +33,25 @@ namespace amqp0_10 { using qpid::messaging::Address; using qpid::messaging::MessageImplAccess; +using namespace qpid::framing::message; void OutgoingMessage::convert(const qpid::messaging::Message& from) { //TODO: need to avoid copying as much as possible message.setData(from.getContent()); message.getMessageProperties().setContentType(from.getContentType()); + message.getMessageProperties().setCorrelationId(from.getCorrelationId()); + message.getMessageProperties().setUserId(from.getUserId()); const Address& address = from.getReplyTo(); if (address) { message.getMessageProperties().setReplyTo(AddressResolution::convert(address)); } translate(from.getHeaders(), message.getMessageProperties().getApplicationHeaders()); - //TODO: set other message properties - message.getDeliveryProperties().setRoutingKey(from.getSubject()); - //TODO: set other delivery properties + message.getDeliveryProperties().setTtl(from.getTtl()); + if (from.getDurable()) { + message.getDeliveryProperties().setDeliveryMode(DELIVERY_MODE_PERSISTENT); + } + } namespace { diff --git a/cpp/src/qpid/messaging/Message.cpp b/cpp/src/qpid/messaging/Message.cpp index deb40b6aa3..e4b28c3b2c 100644 --- a/cpp/src/qpid/messaging/Message.cpp +++ b/cpp/src/qpid/messaging/Message.cpp @@ -41,6 +41,23 @@ const std::string& Message::getSubject() const { return impl->getSubject(); } void Message::setContentType(const std::string& s) { impl->setContentType(s); } const std::string& Message::getContentType() const { return impl->getContentType(); } +void Message::setMessageId(const std::string& id) { impl->messageId = id; } +const std::string& Message::getMessageId() const { return impl->messageId; } + +void Message::setUserId(const std::string& id) { impl->userId = id; } +const std::string& Message::getUserId() const { return impl->userId; } + +void Message::setCorrelationId(const std::string& id) { impl->correlationId = id; } +const std::string& Message::getCorrelationId() const { return impl->correlationId; } + +void Message::setTtl(uint64_t ttl) { impl->ttl = ttl; } +uint64_t Message::getTtl() const { return impl->ttl; } + +void Message::setDurable(bool durable) { impl->durable = durable; } +bool Message::getDurable() const { return impl->durable; } + +bool Message::isRedelivered() const { return impl->redelivered; } + const VariantMap& Message::getHeaders() const { return impl->getHeaders(); } VariantMap& Message::getHeaders() { return impl->getHeaders(); } diff --git a/cpp/src/qpid/messaging/MessageImpl.cpp b/cpp/src/qpid/messaging/MessageImpl.cpp index e17fccd64f..5d754ac487 100644 --- a/cpp/src/qpid/messaging/MessageImpl.cpp +++ b/cpp/src/qpid/messaging/MessageImpl.cpp @@ -28,8 +28,18 @@ namespace { const std::string EMPTY_STRING = ""; } -MessageImpl::MessageImpl(const std::string& c) : bytes(c), internalId(0) {} -MessageImpl::MessageImpl(const char* chars, size_t count) : bytes(chars, count), internalId(0) {} +MessageImpl::MessageImpl(const std::string& c) : + ttl(0), + durable(false), + redelivered(false), + bytes(c), + internalId(0) {} +MessageImpl::MessageImpl(const char* chars, size_t count) : + ttl(0), + durable (false), + redelivered(false), + bytes(chars, count), + internalId(0) {} void MessageImpl::setReplyTo(const Address& d) { replyTo = d; } const Address& MessageImpl::getReplyTo() const { return replyTo; } diff --git a/cpp/src/qpid/messaging/MessageImpl.h b/cpp/src/qpid/messaging/MessageImpl.h index 4939cdc5cc..bdbc1f6a1e 100644 --- a/cpp/src/qpid/messaging/MessageImpl.h +++ b/cpp/src/qpid/messaging/MessageImpl.h @@ -33,6 +33,12 @@ struct MessageImpl Address replyTo; std::string subject; std::string contentType; + std::string messageId; + std::string userId; + std::string correlationId; + uint64_t ttl; + bool durable; + bool redelivered; Variant::Map headers; std::string bytes; |
