diff options
| author | Gordon Sim <gsim@apache.org> | 2013-10-16 11:05:06 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2013-10-16 11:05:06 +0000 |
| commit | 5758d1447cf5b8579d9494ab40d2840083161228 (patch) | |
| tree | 55d7ad04700cf0fee0375c298ce02381ebf0f1a0 /qpid/cpp/src | |
| parent | 609469d8575ba97ff79ebe8977c46e4efc27d660 (diff) | |
| download | qpid-python-5758d1447cf5b8579d9494ab40d2840083161228.tar.gz | |
QPID-5239: preserve type of 'annotations' i.e. application properties added by broker
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1532716 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
| -rw-r--r-- | qpid/cpp/src/qpid/amqp_0_10/Codecs.cpp | 5 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/amqp_0_10/Codecs.h | 1 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp | 4 |
3 files changed, 8 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpid/amqp_0_10/Codecs.cpp b/qpid/cpp/src/qpid/amqp_0_10/Codecs.cpp index 930f402f85..49d152cc05 100644 --- a/qpid/cpp/src/qpid/amqp_0_10/Codecs.cpp +++ b/qpid/cpp/src/qpid/amqp_0_10/Codecs.cpp @@ -575,6 +575,11 @@ void translate(const boost::shared_ptr<FieldValue> from, Variant& to) to = toVariant(from); } +boost::shared_ptr<framing::FieldValue> translate(const types::Variant& from) +{ + return toFieldValue(from); +} + const std::string ListCodec::contentType("amqp/list"); const std::string MapCodec::contentType("amqp/map"); diff --git a/qpid/cpp/src/qpid/amqp_0_10/Codecs.h b/qpid/cpp/src/qpid/amqp_0_10/Codecs.h index 408307eb7a..79d76bcc4b 100644 --- a/qpid/cpp/src/qpid/amqp_0_10/Codecs.h +++ b/qpid/cpp/src/qpid/amqp_0_10/Codecs.h @@ -80,6 +80,7 @@ QPID_COMMON_EXTERN void translate(const boost::shared_ptr<qpid::framing::FieldVa qpid::types::Variant& to); QPID_COMMON_EXTERN void translate(const types::Variant& from, boost::shared_ptr<qpid::framing::FieldValue> to); +QPID_COMMON_EXTERN boost::shared_ptr<qpid::framing::FieldValue> translate(const types::Variant& from); }} // namespace qpid::amqp_0_10 diff --git a/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp b/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp index 0c8434f381..8055b3fe1a 100644 --- a/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp +++ b/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp @@ -185,7 +185,7 @@ class SendHeader copy.castBody<AMQHeaderBody>()->get<MessageProperties>(true); for (qpid::types::Variant::Map::const_iterator i = annotations.begin(); i != annotations.end(); ++i) { - props->getApplicationHeaders().setString(i->first, i->second.asString()); + props->getApplicationHeaders().set(i->first, qpid::amqp_0_10::translate(i->second)); } } if (redelivered || ttl || timestamp) { @@ -402,7 +402,7 @@ boost::intrusive_ptr<PersistableMessage> MessageTransfer::merge(const std::map<s boost::intrusive_ptr<MessageTransfer> clone(new MessageTransfer(this->frames)); qpid::framing::MessageProperties* mp = clone->frames.getHeaders()->get<qpid::framing::MessageProperties>(true); for (qpid::types::Variant::Map::const_iterator i = annotations.begin(); i != annotations.end(); ++i) { - mp->getApplicationHeaders().setString(i->first, i->second); + mp->getApplicationHeaders().set(i->first, qpid::amqp_0_10::translate(i->second)); } return clone; } |
