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