diff options
author | Ted Ross <tross@apache.org> | 2010-02-26 20:07:36 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2010-02-26 20:07:36 +0000 |
commit | e37be70fb4ff467b05fdb84bd3983633b910e8ee (patch) | |
tree | 741c919d516333bad6140f324c52f1db2aa97972 | |
parent | 89df8f99fae65ca333e7de527eadb9ef5382fb43 (diff) | |
download | qpid-python-e37be70fb4ff467b05fdb84bd3983633b910e8ee.tar.gz |
QPID-2423 - Add Constructors to set initial value of content for MapContent and ListContent
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@916803 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/cpp/include/qpid/messaging/ListContent.h | 1 | ||||
-rw-r--r-- | qpid/cpp/include/qpid/messaging/MapContent.h | 1 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/messaging/ListContent.cpp | 6 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/messaging/MapContent.cpp | 6 | ||||
-rw-r--r-- | qpid/cpp/src/tests/MessagingSessionTests.cpp | 53 |
5 files changed, 67 insertions, 0 deletions
diff --git a/qpid/cpp/include/qpid/messaging/ListContent.h b/qpid/cpp/include/qpid/messaging/ListContent.h index 1c4e13716d..f57a920a88 100644 --- a/qpid/cpp/include/qpid/messaging/ListContent.h +++ b/qpid/cpp/include/qpid/messaging/ListContent.h @@ -42,6 +42,7 @@ class ListContent typedef Variant::List::const_reverse_iterator const_reverse_iterator; QPID_CLIENT_EXTERN ListContent(Message&); + QPID_CLIENT_EXTERN ListContent(Message&, const Variant::List&); QPID_CLIENT_EXTERN ~ListContent(); QPID_CLIENT_EXTERN const_iterator begin() const; diff --git a/qpid/cpp/include/qpid/messaging/MapContent.h b/qpid/cpp/include/qpid/messaging/MapContent.h index b05cb31295..3a80a38732 100644 --- a/qpid/cpp/include/qpid/messaging/MapContent.h +++ b/qpid/cpp/include/qpid/messaging/MapContent.h @@ -47,6 +47,7 @@ class MapContent typedef std::map<key_type, Variant>::reverse_iterator reverse_iterator; QPID_CLIENT_EXTERN MapContent(Message&); + QPID_CLIENT_EXTERN MapContent(Message&, const Variant::Map&); QPID_CLIENT_EXTERN ~MapContent(); QPID_CLIENT_EXTERN const_iterator begin() const; diff --git a/qpid/cpp/src/qpid/messaging/ListContent.cpp b/qpid/cpp/src/qpid/messaging/ListContent.cpp index 0c3ca5fc62..038c1fad0b 100644 --- a/qpid/cpp/src/qpid/messaging/ListContent.cpp +++ b/qpid/cpp/src/qpid/messaging/ListContent.cpp @@ -37,6 +37,11 @@ class ListContentImpl : public Variant } } + ListContentImpl(Message& m, const Variant::List& i) : Variant(i), msg(&m) + { + msg->getContent().clear(); + } + void encode() { qpid::client::amqp0_10::ListCodec codec; @@ -45,6 +50,7 @@ class ListContentImpl : public Variant }; ListContent::ListContent(Message& m) : impl(new ListContentImpl(m)) {} +ListContent::ListContent(Message& m, const Variant::List& i) : impl(new ListContentImpl(m, i)) {} ListContent::~ListContent() { delete impl; } ListContent& ListContent::operator=(const ListContent& l) { *impl = *l.impl; return *this; } diff --git a/qpid/cpp/src/qpid/messaging/MapContent.cpp b/qpid/cpp/src/qpid/messaging/MapContent.cpp index 6dba22be99..1f190b85aa 100644 --- a/qpid/cpp/src/qpid/messaging/MapContent.cpp +++ b/qpid/cpp/src/qpid/messaging/MapContent.cpp @@ -37,6 +37,11 @@ class MapContentImpl : public Variant } } + MapContentImpl(Message& m, const Variant::Map& i) : Variant(i), msg(&m) + { + msg->getContent().clear(); + } + void encode() { qpid::client::amqp0_10::MapCodec codec; @@ -46,6 +51,7 @@ class MapContentImpl : public Variant }; MapContent::MapContent(Message& m) : impl(new MapContentImpl(m)) {} +MapContent::MapContent(Message& m, const Variant::Map& i) : impl(new MapContentImpl(m, i)) {} MapContent::~MapContent() { delete impl; } MapContent& MapContent::operator=(const MapContent& m) { *impl = *m.impl; return *this; } diff --git a/qpid/cpp/src/tests/MessagingSessionTests.cpp b/qpid/cpp/src/tests/MessagingSessionTests.cpp index 9c6f066d64..98b92e809c 100644 --- a/qpid/cpp/src/tests/MessagingSessionTests.cpp +++ b/qpid/cpp/src/tests/MessagingSessionTests.cpp @@ -346,6 +346,25 @@ QPID_AUTO_TEST_CASE(testMapMessage) fix.session.acknowledge(); } +QPID_AUTO_TEST_CASE(testMapMessageWithInitial) +{ + QueueFixture fix; + Sender sender = fix.session.createSender(fix.queue); + Message out; + Variant::Map imap; + imap["abc"] = "def"; + imap["pi"] = 3.14f; + MapContent content(out, imap); + content.encode(); + sender.send(out); + Receiver receiver = fix.session.createReceiver(fix.queue); + Message in = receiver.fetch(5 * qpid::sys::TIME_SEC); + MapView view(in); + BOOST_CHECK_EQUAL(view["abc"].asString(), "def"); + BOOST_CHECK_EQUAL(view["pi"].asFloat(), 3.14f); + fix.session.acknowledge(); +} + QPID_AUTO_TEST_CASE(testListMessage) { QueueFixture fix; @@ -379,6 +398,40 @@ QPID_AUTO_TEST_CASE(testListMessage) fix.session.acknowledge(); } +QPID_AUTO_TEST_CASE(testListMessageWithInitial) +{ + QueueFixture fix; + Sender sender = fix.session.createSender(fix.queue); + Message out; + Variant::List ilist; + ilist.push_back(Variant("abc")); + ilist.push_back(Variant(1234)); + ilist.push_back(Variant("def")); + ilist.push_back(Variant(56.789)); + ListContent content(out, ilist); + content.encode(); + sender.send(out); + Receiver receiver = fix.session.createReceiver(fix.queue); + Message in = receiver.fetch(5 * qpid::sys::TIME_SEC); + ListView view(in); + BOOST_CHECK_EQUAL(view.size(), content.size()); + BOOST_CHECK_EQUAL(view.front().asString(), "abc"); + BOOST_CHECK_EQUAL(view.back().asDouble(), 56.789); + + ListView::const_iterator i = view.begin(); + BOOST_CHECK(i != view.end()); + BOOST_CHECK_EQUAL(i->asString(), "abc"); + BOOST_CHECK(++i != view.end()); + BOOST_CHECK_EQUAL(i->asInt64(), 1234); + BOOST_CHECK(++i != view.end()); + BOOST_CHECK_EQUAL(i->asString(), "def"); + BOOST_CHECK(++i != view.end()); + BOOST_CHECK_EQUAL(i->asDouble(), 56.789); + BOOST_CHECK(++i == view.end()); + + fix.session.acknowledge(); +} + QPID_AUTO_TEST_CASE(testReject) { QueueFixture fix; |