diff options
Diffstat (limited to 'qpid/cpp')
| -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; } |
