You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2017/07/21 17:02:09 UTC

[13/20] qpid-proton git commit: PROTON-1481: [C++ binding] Added simpler way to get work_queue from model objects

PROTON-1481: [C++ binding] Added simpler way to get work_queue from model objects


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

Branch: refs/heads/master
Commit: d1c91a42e59f618fccb6838ffd30372a179759e2
Parents: 45d5612
Author: Andrew Stitcher <as...@apache.org>
Authored: Fri May 19 12:27:17 2017 -0400
Committer: Andrew Stitcher <as...@apache.org>
Committed: Fri Jul 21 12:50:06 2017 -0400

----------------------------------------------------------------------
 examples/cpp/broker.cpp                             |  4 ++--
 examples/cpp/scheduled_send.cpp                     | 12 ++++++++----
 examples/cpp/scheduled_send_03.cpp                  |  2 +-
 proton-c/bindings/cpp/include/proton/connection.hpp |  3 +++
 proton-c/bindings/cpp/include/proton/link.hpp       |  3 +++
 proton-c/bindings/cpp/include/proton/session.hpp    |  3 +++
 proton-c/bindings/cpp/include/proton/transfer.hpp   |  3 +++
 proton-c/bindings/cpp/src/connection.cpp            |  4 ++++
 proton-c/bindings/cpp/src/link.cpp                  |  4 ++++
 proton-c/bindings/cpp/src/session.cpp               |  4 ++++
 proton-c/bindings/cpp/src/transfer.cpp              |  2 ++
 11 files changed, 37 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d1c91a42/examples/cpp/broker.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/broker.cpp b/examples/cpp/broker.cpp
index 8c2d2ff..d39314c 100644
--- a/examples/cpp/broker.cpp
+++ b/examples/cpp/broker.cpp
@@ -182,7 +182,7 @@ class Sender : public proton::messaging_handler {
 
 public:
     Sender(proton::sender s, senders& ss) :
-        sender_(s), senders_(ss), work_queue_(make_thread_safe(s).get()->work_queue()), queue_(0), pending_credit_(0)
+        sender_(s), senders_(ss), work_queue_(s.work_queue()), queue_(0), pending_credit_(0)
     {}
 
     void add(proton::void_function0& f) {
@@ -330,7 +330,7 @@ class Receiver : public proton::messaging_handler {
 
 public:
     Receiver(proton::receiver r) :
-        receiver_(r), work_queue_(make_thread_safe(r).get()->work_queue()), queue_(0)
+        receiver_(r), work_queue_(r.work_queue()), queue_(0)
     {}
 
     void add(proton::void_function0& f) {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d1c91a42/examples/cpp/scheduled_send.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/scheduled_send.cpp b/examples/cpp/scheduled_send.cpp
index bbef15b..2914c44 100644
--- a/examples/cpp/scheduled_send.cpp
+++ b/examples/cpp/scheduled_send.cpp
@@ -56,12 +56,16 @@ class scheduled_sender : public proton::messaging_handler {
     // The awkward looking double lambda is necessary because the scheduled lambdas run in the container context
     // and must arrange lambdas for send and close to happen in the connection context.
     void on_container_start(proton::container &c) OVERRIDE {
-        sender = c.open_sender(url);
-        work_queue = &proton::make_thread_safe(sender).get()->work_queue();
+        c.open_sender(url);
+    }
+
+    void on_sender_open(proton::sender &s) OVERRIDE {
+        sender = s;
+        work_queue = &s.work_queue();
         // Call this->cancel after timeout.
-        c.schedule(timeout, [this]() { this->work_queue->add( [this]() { this->cancel(); }); });
+        s.container().schedule(timeout, [this]() { this->work_queue->add( [this]() { this->cancel(); }); });
          // Start regular ticks every interval.
-        c.schedule(interval, [this]() { this->work_queue->add( [this]() { this->tick(); }); });
+        s.container().schedule(interval, [this]() { this->work_queue->add( [this]() { this->tick(); }); });
     }
 
     void cancel() {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d1c91a42/examples/cpp/scheduled_send_03.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/scheduled_send_03.cpp b/examples/cpp/scheduled_send_03.cpp
index 4b1b626..c3c63c8 100644
--- a/examples/cpp/scheduled_send_03.cpp
+++ b/examples/cpp/scheduled_send_03.cpp
@@ -96,7 +96,7 @@ class scheduled_sender : public proton::messaging_handler {
     }
 
     void on_sender_open(proton::sender & s) OVERRIDE {
-        work_queue = &proton::make_thread_safe(s).get()->work_queue();
+        work_queue = &s.work_queue();
 
         do_cancel = cancel_fn(*this, s);
         do_tick = tick_fn(*this, s);

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d1c91a42/proton-c/bindings/cpp/include/proton/connection.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/connection.hpp b/proton-c/bindings/cpp/include/proton/connection.hpp
index 331ba82..ef75a4e 100644
--- a/proton-c/bindings/cpp/include/proton/connection.hpp
+++ b/proton-c/bindings/cpp/include/proton/connection.hpp
@@ -59,6 +59,9 @@ PN_CPP_CLASS_EXTERN connection : public internal::object<pn_connection_t>, publi
     /// container
     PN_CPP_EXTERN class container &container() const;
 
+    /// Get the work_queue for the connection.
+    PN_CPP_EXTERN class work_queue& work_queue() const;
+
     /// Get the transport for the connection.
     PN_CPP_EXTERN class transport transport() const;
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d1c91a42/proton-c/bindings/cpp/include/proton/link.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/link.hpp b/proton-c/bindings/cpp/include/proton/link.hpp
index 8534f21..8627ec9 100644
--- a/proton-c/bindings/cpp/include/proton/link.hpp
+++ b/proton-c/bindings/cpp/include/proton/link.hpp
@@ -78,6 +78,9 @@ PN_CPP_CLASS_EXTERN link : public internal::object<pn_link_t> , public endpoint
     /// The container for this link.
     PN_CPP_EXTERN class container &container() const;
 
+    /// Get the work_queue for the link.
+    PN_CPP_EXTERN class work_queue& work_queue() const;
+
     /// The connection that owns this link.
     PN_CPP_EXTERN class connection connection() const;
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d1c91a42/proton-c/bindings/cpp/include/proton/session.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/session.hpp b/proton-c/bindings/cpp/include/proton/session.hpp
index cbdf1b9..8d4184b 100644
--- a/proton-c/bindings/cpp/include/proton/session.hpp
+++ b/proton-c/bindings/cpp/include/proton/session.hpp
@@ -66,6 +66,9 @@ PN_CPP_CLASS_EXTERN session : public internal::object<pn_session_t>, public endp
     /// Get the container for this session.
     PN_CPP_EXTERN class container &container() const;
 
+    /// Get the work_queue for the session.
+    PN_CPP_EXTERN class work_queue& work_queue() const;
+
     /// Get the connection this session belongs to.
     PN_CPP_EXTERN class connection connection() const;
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d1c91a42/proton-c/bindings/cpp/include/proton/transfer.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/transfer.hpp b/proton-c/bindings/cpp/include/proton/transfer.hpp
index ea073f6..80b0860 100644
--- a/proton-c/bindings/cpp/include/proton/transfer.hpp
+++ b/proton-c/bindings/cpp/include/proton/transfer.hpp
@@ -61,6 +61,9 @@ class transfer : public internal::object<pn_delivery_t> {
     /// Return the connection for this transfer.
     PN_CPP_EXTERN class connection connection() const;
 
+    /// Get the work_queue for the transfer.
+    PN_CPP_EXTERN class work_queue& work_queue() const;
+
     /// Return the container for this transfer.
     PN_CPP_EXTERN class container &container() const;
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d1c91a42/proton-c/bindings/cpp/src/connection.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/connection.cpp b/proton-c/bindings/cpp/src/connection.cpp
index 5432a42..a37d3b5 100644
--- a/proton-c/bindings/cpp/src/connection.cpp
+++ b/proton-c/bindings/cpp/src/connection.cpp
@@ -76,6 +76,10 @@ container& connection::container() const {
     return *c;
 }
 
+work_queue& connection::work_queue() const {
+    return connection_context::get(pn_object()).work_queue_;
+}
+
 session_range connection::sessions() const {
     return session_range(session_iterator(make_wrapper(pn_session_head(pn_object(), 0))));
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d1c91a42/proton-c/bindings/cpp/src/link.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/link.cpp b/proton-c/bindings/cpp/src/link.cpp
index eb4ccb1..1cb87ba 100644
--- a/proton-c/bindings/cpp/src/link.cpp
+++ b/proton-c/bindings/cpp/src/link.cpp
@@ -70,6 +70,10 @@ container& link::container() const {
     return connection().container();
 }
 
+work_queue& link::work_queue() const {
+    return connection().work_queue();
+}
+
 class connection link::connection() const {
     return make_wrapper(pn_session_connection(pn_link_session(pn_object())));
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d1c91a42/proton-c/bindings/cpp/src/session.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/session.cpp b/proton-c/bindings/cpp/src/session.cpp
index a2b318e..4c3932b 100644
--- a/proton-c/bindings/cpp/src/session.cpp
+++ b/proton-c/bindings/cpp/src/session.cpp
@@ -54,6 +54,10 @@ container& session::container() const {
     return connection().container();
 }
 
+work_queue& session::work_queue() const {
+    return connection().work_queue();
+}
+
 connection session::connection() const {
     return make_wrapper(pn_session_connection(pn_object()));
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d1c91a42/proton-c/bindings/cpp/src/transfer.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/transfer.cpp b/proton-c/bindings/cpp/src/transfer.cpp
index 78b6c0e..8066dd5 100644
--- a/proton-c/bindings/cpp/src/transfer.cpp
+++ b/proton-c/bindings/cpp/src/transfer.cpp
@@ -36,6 +36,8 @@ namespace proton {
 session transfer::session() const { return make_wrapper(pn_link_session(pn_delivery_link(pn_object()))); }
 connection transfer::connection() const { return make_wrapper(pn_session_connection(pn_link_session(pn_delivery_link(pn_object())))); }
 container& transfer::container() const { return connection().container(); }
+work_queue& transfer::work_queue() const { return connection().work_queue(); }
+
 
 bool transfer::settled() const { return pn_delivery_settled(pn_object()); }
 


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