You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2021/10/29 08:57:21 UTC

[qpid-proton] branch main updated: PROTON-2382: An accessor on tracker for the delivery tag

This is an automated email from the ASF dual-hosted git repository.

robbie pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-proton.git


The following commit(s) were added to refs/heads/main by this push:
     new 0d60a23  PROTON-2382: An accessor on tracker for the delivery tag
0d60a23 is described below

commit 0d60a23a41d7386a217bc58248981eece3a8369c
Author: dreampearl <ra...@gmail.com>
AuthorDate: Tue Oct 12 16:32:24 2021 +0530

    PROTON-2382: An accessor on tracker for the delivery tag
    
    This closes #336
---
 cpp/include/proton/tracker.hpp |  4 ++++
 cpp/src/delivery_test.cpp      | 28 +++++++++++++++++++++++-----
 cpp/src/tracker.cpp            |  3 +++
 3 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/cpp/include/proton/tracker.hpp b/cpp/include/proton/tracker.hpp
index 8c3a58d..1dabf8b 100644
--- a/cpp/include/proton/tracker.hpp
+++ b/cpp/include/proton/tracker.hpp
@@ -22,6 +22,7 @@
  *
  */
 
+#include "./binary.hpp"
 #include "./internal/export.hpp"
 #include "./transfer.hpp"
 
@@ -49,6 +50,9 @@ class tracker : public transfer {
     /// Get the sender for this tracker.
     PN_CPP_EXTERN class sender sender() const;
 
+    /// Get the tag for this tracker.
+    PN_CPP_EXTERN binary tag() const;
+
     /// @cond INTERNAL
   friend class internal::factory<tracker>;
     /// @endcond
diff --git a/cpp/src/delivery_test.cpp b/cpp/src/delivery_test.cpp
index e4c69eb..af6441c 100644
--- a/cpp/src/delivery_test.cpp
+++ b/cpp/src/delivery_test.cpp
@@ -51,6 +51,9 @@ std::mutex m;
 std::condition_variable cv;
 bool listener_ready = false;
 int listener_port;
+int tracker_accept_counter;
+int tracker_settle_counter;
+proton::binary test_tag("TESTTAG");
 } // namespace
 
 class test_recv : public proton::messaging_handler {
@@ -78,8 +81,7 @@ class test_recv : public proton::messaging_handler {
     }
 
     void on_message(proton::delivery &d, proton::message &msg) override {
-        proton::binary test_tag_recv("TESTTAG");
-        ASSERT_EQUAL(test_tag_recv, d.tag());
+        ASSERT_EQUAL(test_tag, d.tag());
         d.receiver().close();
         d.connection().close();
         listener.stop();
@@ -102,14 +104,27 @@ class test_send : public proton::messaging_handler {
     void on_sendable(proton::sender &s) override {
         proton::message msg;
         msg.body("message");
-        proton::binary test_tag_send("TESTTAG");
-        s.send(msg, test_tag_send);
+        proton::tracker t = s.send(msg, test_tag);
+        ASSERT_EQUAL(test_tag, t.tag());
+        s.connection().close();
+    }
+
+    void on_tracker_accept(proton::tracker &t) override {
+        ASSERT_EQUAL(test_tag, t.tag());
+        tracker_accept_counter++;
+    }
+
+    void on_tracker_settle(proton::tracker &t) override {
+        ASSERT_EQUAL(test_tag, t.tag());
+        tracker_settle_counter++;
     }
 };
 
 int test_delivery_tag() {
-    std::string recv_address("127.0.0.1:0/test");
+    tracker_accept_counter = 0;
+    tracker_settle_counter = 0;
 
+    std::string recv_address("127.0.0.1:0/test");
     test_recv recv(recv_address);
     proton::container c(recv);
     std::thread thread_recv([&c]() -> void { c.run(); });
@@ -124,6 +139,9 @@ int test_delivery_tag() {
     proton::container(send).run();
     thread_recv.join();
 
+    ASSERT_EQUAL(1 ,tracker_accept_counter);
+    ASSERT_EQUAL(1 ,tracker_settle_counter);
+
     return 0;
 }
 
diff --git a/cpp/src/tracker.cpp b/cpp/src/tracker.cpp
index 3b15ed5..e703767 100644
--- a/cpp/src/tracker.cpp
+++ b/cpp/src/tracker.cpp
@@ -24,6 +24,8 @@
 #include "proton/sender.hpp"
 
 #include "proton_bits.hpp"
+#include "types_internal.hpp"
+#include "proton/binary.hpp"
 
 #include <proton/delivery.h>
 
@@ -31,4 +33,5 @@ namespace proton {
 
 tracker::tracker(pn_delivery_t *d): transfer(make_wrapper(d)) {}
 sender tracker::sender() const { return make_wrapper<class sender>(pn_delivery_link(pn_object())); }
+binary tracker::tag() const { return bin(pn_delivery_tag(pn_object())); }
 }

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