You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2015/12/30 22:13:29 UTC

[41/50] [abbrv] qpid-proton git commit: PROTON-1084 [cpp binding] Add message annotation support

PROTON-1084 [cpp binding] Add message annotation support


Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/12d2cd62
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/12d2cd62
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/12d2cd62

Branch: refs/heads/go1
Commit: 12d2cd62cca1a5040c4aa091213d7415ad618b99
Parents: c41ff06
Author: Kim van der Riet <kp...@apache.org>
Authored: Tue Dec 22 10:52:42 2015 -0500
Committer: Kim van der Riet <kp...@apache.org>
Committed: Tue Dec 22 10:52:42 2015 -0500

----------------------------------------------------------------------
 .../bindings/cpp/include/proton/message.hpp     |  7 +++
 proton-c/bindings/cpp/src/message.cpp           | 48 ++++++++++++++++++++
 2 files changed, 55 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/12d2cd62/proton-c/bindings/cpp/include/proton/message.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/message.hpp b/proton-c/bindings/cpp/include/proton/message.hpp
index f04ea07..b132f5f 100644
--- a/proton-c/bindings/cpp/include/proton/message.hpp
+++ b/proton-c/bindings/cpp/include/proton/message.hpp
@@ -132,6 +132,13 @@ class message
     /** Erase an application property. Returns false if there was no such property. */
     PN_CPP_EXTERN bool erase_property(const std::string &name);
 
+    PN_CPP_EXTERN void annotations(const value&);
+    PN_CPP_EXTERN const data annotations() const;
+    PN_CPP_EXTERN data annotations();
+    PN_CPP_EXTERN void annotation(const proton::amqp_symbol &key, const value &val);
+    PN_CPP_EXTERN value annotation(const proton::amqp_symbol &key) const;
+    PN_CPP_EXTERN bool erase_annotation(const proton::amqp_symbol &key);
+
     /** Encode into a string, growing the string if necessary. */
     PN_CPP_EXTERN void encode(std::string &bytes) const;
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/12d2cd62/proton-c/bindings/cpp/src/message.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/message.cpp b/proton-c/bindings/cpp/src/message.cpp
index dc7e50f..cb29029 100644
--- a/proton-c/bindings/cpp/src/message.cpp
+++ b/proton-c/bindings/cpp/src/message.cpp
@@ -248,6 +248,54 @@ bool message::erase_property(const std::string& name) {
     return false;
 }
 
+void message::annotations(const value& v) {
+    annotations().copy(v);
+}
+
+const data message::annotations() const {
+    return pn_message_annotations(message_);
+}
+
+data message::annotations() {
+    return pn_message_annotations(message_);
+}
+
+namespace {
+typedef std::map<proton::amqp_symbol, value> annotation_map;
+}
+
+void message::annotation(const proton::amqp_symbol &k, const value &v) {
+    annotation_map m;
+    if (!annotations().empty())
+        annotations().get(m);
+    m[k] = v;
+    annotations(m);
+}
+
+value message::annotation(const proton::amqp_symbol &k) const {
+    if (!annotations().empty()) {
+        annotation_map m;
+        annotations().get(m);
+        annotation_map::const_iterator i = m.find(k);
+        if (i != m.end())
+            return i->second;
+    }
+    return value();
+
+}
+
+bool message::erase_annotation(const proton::amqp_symbol &k) {
+    if (!annotations().empty()) {
+        annotation_map m;
+        annotations().get(m);
+        if (m.erase(k)) {
+            annotations(m);
+            return true;
+        }
+    }
+    return false;
+}
+
 void message::encode(std::string &s) const {
     size_t sz = s.capacity();
     if (sz < 512) sz = 512;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org