summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2010-07-28 18:35:15 +0000
committerTed Ross <tross@apache.org>2010-07-28 18:35:15 +0000
commit1c077959ef54f616ec12e9644b4f07557a3e220d (patch)
tree90e1adeb4285b64073971d0facf016569b142f26 /cpp
parent1939f9db799507eabfc7eb1daa74e3cb31b5b252 (diff)
downloadqpid-python-1c077959ef54f616ec12e9644b4f07557a3e220d.tar.gz
Made the new C++ API more friendly for swig-wrapping.
- Added Message::setProperty() as an alternative to using getProperties() to obtain a writable reference to a Variant::Map. - Added unit testing for this new method. - Added #ifndef SWIG conditions around the declarations of non-member operator<< methods. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@980147 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
-rw-r--r--cpp/include/qpid/messaging/Address.h2
-rw-r--r--cpp/include/qpid/messaging/Message.h2
-rw-r--r--cpp/include/qpid/types/Variant.h2
-rw-r--r--cpp/src/qpid/messaging/Message.cpp1
-rw-r--r--cpp/src/qpid/messaging/MessageImpl.cpp1
-rw-r--r--cpp/src/qpid/messaging/MessageImpl.h1
-rw-r--r--cpp/src/tests/MessagingSessionTests.cpp2
7 files changed, 11 insertions, 0 deletions
diff --git a/cpp/include/qpid/messaging/Address.h b/cpp/include/qpid/messaging/Address.h
index 2e36d0ae22..bebbfc72f6 100644
--- a/cpp/include/qpid/messaging/Address.h
+++ b/cpp/include/qpid/messaging/Address.h
@@ -155,7 +155,9 @@ class Address
AddressImpl* impl;
};
+#ifndef SWIG
QPID_MESSAGING_EXTERN std::ostream& operator<<(std::ostream& out, const Address& address);
+#endif
}} // namespace qpid::messaging
diff --git a/cpp/include/qpid/messaging/Message.h b/cpp/include/qpid/messaging/Message.h
index ba58b5887c..d48af35cc0 100644
--- a/cpp/include/qpid/messaging/Message.h
+++ b/cpp/include/qpid/messaging/Message.h
@@ -100,6 +100,8 @@ class Message
QPID_MESSAGING_EXTERN const char* getContentPtr() const;
/** Get the size of content in bytes. */
QPID_MESSAGING_EXTERN size_t getContentSize() const;
+
+ QPID_MESSAGING_EXTERN void setProperty(const std::string&, const qpid::types::Variant&);
private:
MessageImpl* impl;
friend struct MessageImplAccess;
diff --git a/cpp/include/qpid/types/Variant.h b/cpp/include/qpid/types/Variant.h
index 7b43422261..3ed1db4452 100644
--- a/cpp/include/qpid/types/Variant.h
+++ b/cpp/include/qpid/types/Variant.h
@@ -162,10 +162,12 @@ class Variant
VariantImpl* impl;
};
+#ifndef SWIG
QPID_TYPES_EXTERN std::ostream& operator<<(std::ostream& out, const Variant& value);
QPID_TYPES_EXTERN std::ostream& operator<<(std::ostream& out, const Variant::Map& map);
QPID_TYPES_EXTERN std::ostream& operator<<(std::ostream& out, const Variant::List& list);
QPID_TYPES_EXTERN bool operator==(const Variant& a, const Variant& b);
+#endif
}} // namespace qpid::types
#endif /*!QPID_TYPES_VARIANT_H*/
diff --git a/cpp/src/qpid/messaging/Message.cpp b/cpp/src/qpid/messaging/Message.cpp
index 524af023e1..83cdfd3c55 100644
--- a/cpp/src/qpid/messaging/Message.cpp
+++ b/cpp/src/qpid/messaging/Message.cpp
@@ -68,6 +68,7 @@ void Message::setRedelivered(bool redelivered) { impl->redelivered = redelivered
const Variant::Map& Message::getProperties() const { return impl->getHeaders(); }
Variant::Map& Message::getProperties() { return impl->getHeaders(); }
+void Message::setProperty(const std::string& k, const qpid::types::Variant& v) { impl->setHeader(k,v); }
void Message::setContent(const std::string& c) { impl->setBytes(c); }
void Message::setContent(const char* chars, size_t count) { impl->setBytes(chars, count); }
diff --git a/cpp/src/qpid/messaging/MessageImpl.cpp b/cpp/src/qpid/messaging/MessageImpl.cpp
index 6138ab4a2c..0601800e46 100644
--- a/cpp/src/qpid/messaging/MessageImpl.cpp
+++ b/cpp/src/qpid/messaging/MessageImpl.cpp
@@ -56,6 +56,7 @@ const std::string& MessageImpl::getContentType() const { return contentType; }
const Variant::Map& MessageImpl::getHeaders() const { return headers; }
Variant::Map& MessageImpl::getHeaders() { return headers; }
+void MessageImpl::setHeader(const std::string& key, const qpid::types::Variant& val) { headers[key] = val; }
//should these methods be on MessageContent?
void MessageImpl::setBytes(const std::string& c) { bytes = c; }
diff --git a/cpp/src/qpid/messaging/MessageImpl.h b/cpp/src/qpid/messaging/MessageImpl.h
index 7793fc7943..57df6b3fda 100644
--- a/cpp/src/qpid/messaging/MessageImpl.h
+++ b/cpp/src/qpid/messaging/MessageImpl.h
@@ -60,6 +60,7 @@ struct MessageImpl
const qpid::types::Variant::Map& getHeaders() const;
qpid::types::Variant::Map& getHeaders();
+ void setHeader(const std::string& key, const qpid::types::Variant& val);
void setBytes(const std::string& bytes);
void setBytes(const char* chars, size_t count);
diff --git a/cpp/src/tests/MessagingSessionTests.cpp b/cpp/src/tests/MessagingSessionTests.cpp
index d6992fc049..d75ff9fdfd 100644
--- a/cpp/src/tests/MessagingSessionTests.cpp
+++ b/cpp/src/tests/MessagingSessionTests.cpp
@@ -83,6 +83,7 @@ QPID_AUTO_TEST_CASE(testSendReceiveHeaders)
Message out("test-message");
for (uint i = 0; i < 10; ++i) {
out.getProperties()["a"] = i;
+ out.setProperty("b", i + 100);
sender.send(out);
}
Receiver receiver = fix.session.createReceiver(fix.queue);
@@ -91,6 +92,7 @@ QPID_AUTO_TEST_CASE(testSendReceiveHeaders)
BOOST_CHECK(receiver.fetch(in, Duration::SECOND * 5));
BOOST_CHECK_EQUAL(in.getContent(), out.getContent());
BOOST_CHECK_EQUAL(in.getProperties()["a"].asUint32(), i);
+ BOOST_CHECK_EQUAL(in.getProperties()["b"].asUint32(), i + 100);
fix.session.acknowledge();
}
}