Repository: qpid-proton Updated Branches: refs/heads/master 4971ac573 -> 27cea74f9
PROTON-1153: [C++ binding] Simplify proton_event - Remove unecessary type member - Remove unused name() member - Remove unused link, session, connection, transport accessors As this is an internal API they can just be substituted with direct access to proton-c calls. - Moved trivial accessors to header file - this is internal only so doesn't leak any proton-c to the API user. Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/27cea74f Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/27cea74f Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/27cea74f Branch: refs/heads/master Commit: 27cea74f960e3e19d1e19a09ca7038ac23b1da43 Parents: 4971ac5 Author: Andrew Stitcher <[email protected]> Authored: Thu Apr 21 15:24:07 2016 -0400 Committer: Andrew Stitcher <[email protected]> Committed: Thu Apr 21 15:52:37 2016 -0400 ---------------------------------------------------------------------- proton-c/bindings/cpp/src/connector.cpp | 4 +- proton-c/bindings/cpp/src/container_impl.cpp | 4 +- .../bindings/cpp/src/io/connection_engine.cpp | 2 +- proton-c/bindings/cpp/src/proton_event.cpp | 57 ++------------------ proton-c/bindings/cpp/src/proton_event.hpp | 29 ++++------ 5 files changed, 18 insertions(+), 78 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/27cea74f/proton-c/bindings/cpp/src/connector.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/connector.cpp b/proton-c/bindings/cpp/src/connector.cpp index 8df766f..9aca9a0 100644 --- a/proton-c/bindings/cpp/src/connector.cpp +++ b/proton-c/bindings/cpp/src/connector.cpp @@ -91,11 +91,11 @@ void connector::on_transport_tail_closed(proton_event &e) { on_transport_closed(e); } -void connector::on_transport_closed(proton_event &e) { +void connector::on_transport_closed(proton_event &) { if (!connection_) return; if (connection_.active()) { if (reconnect_timer_) { - e.connection().transport().unbind(); + connection_.transport().unbind(); transport_configured_ = false; int delay = reconnect_timer_->next_delay(timestamp::now()); if (delay >= 0) { http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/27cea74f/proton-c/bindings/cpp/src/container_impl.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/container_impl.cpp b/proton-c/bindings/cpp/src/container_impl.cpp index c8e8968..1848734 100644 --- a/proton-c/bindings/cpp/src/container_impl.cpp +++ b/proton-c/bindings/cpp/src/container_impl.cpp @@ -63,10 +63,10 @@ struct handler_context { * should be small and free of indirect malloc/free/new/delete. */ - static void dispatch(pn_handler_t *c_handler, pn_event_t *c_event, pn_event_type_t type) + static void dispatch(pn_handler_t *c_handler, pn_event_t *c_event, pn_event_type_t) { handler_context& hc(handler_context::get(c_handler)); - proton_event pevent(c_event, type, hc.container_); + proton_event pevent(c_event, hc.container_); pevent.dispatch(*hc.handler_); return; } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/27cea74f/proton-c/bindings/cpp/src/io/connection_engine.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/io/connection_engine.cpp b/proton-c/bindings/cpp/src/io/connection_engine.cpp index a38ec81..b3aa223 100644 --- a/proton-c/bindings/cpp/src/io/connection_engine.cpp +++ b/proton-c/bindings/cpp/src/io/connection_engine.cpp @@ -108,7 +108,7 @@ bool connection_engine::dispatch() { e; e = pn_collector_peek(collector_.get())) { - proton_event(e, pn_event_type(e), 0).dispatch(h); + proton_event(e, 0).dispatch(h); pn_collector_pop(collector_.get()); } return !(pn_transport_closed(transport_.pn_object()) || http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/27cea74f/proton-c/bindings/cpp/src/proton_event.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/proton_event.cpp b/proton-c/bindings/cpp/src/proton_event.cpp index ade1ecd..40bd93d 100644 --- a/proton-c/bindings/cpp/src/proton_event.cpp +++ b/proton-c/bindings/cpp/src/proton_event.cpp @@ -21,67 +21,16 @@ #include "proton_event.hpp" -#include "proton/container.hpp" -#include "proton/delivery.hpp" #include "proton/error.hpp" -#include "proton/receiver.hpp" -#include "proton/sender.hpp" -#include "proton/transport.hpp" #include "msg.hpp" -#include "contexts.hpp" #include "proton_handler.hpp" -#include "proton/reactor.h" -#include "proton/link.h" - namespace proton { -proton_event::proton_event(pn_event_t *ce, pn_event_type_t t, class container *c) : - pn_event_(ce), - type_(event_type(t)), - container_(c) -{} - -proton_event::event_type proton_event::type() const { return type_; } - -std::string proton_event::name() const { return pn_event_type_name(pn_event_type_t(type_)); } - -pn_event_t *proton_event::pn_event() const { return pn_event_; } - -container* proton_event::container() const { - return container_; -} - -transport proton_event::transport() const { - pn_transport_t *t = pn_event_transport(pn_event()); - if (!t) - throw error(MSG("No transport context for this event")); - return t; -} - -connection proton_event::connection() const { - pn_connection_t *conn = pn_event_connection(pn_event()); - if (!conn) - throw error(MSG("No connection context for this event")); - return conn; -} - -session proton_event::session() const { - pn_session_t *sess = pn_event_session(pn_event()); - if (!sess) - throw error(MSG("No session context for this event")); - return sess; -} - -link proton_event::link() const { - class link lnk = pn_event_link(pn_event()); - if (!lnk) throw error(MSG("No link context for this event")); - return lnk; -} - void proton_event::dispatch(proton_handler &handler) { - switch(type_) { + pn_event_type_t type = pn_event_type(pn_event_); + switch(type) { case PN_REACTOR_INIT: handler.on_reactor_init(*this); break; case PN_REACTOR_QUIESCED: handler.on_reactor_quiesced(*this); break; @@ -131,7 +80,7 @@ void proton_event::dispatch(proton_handler &handler) { case PN_SELECTABLE_ERROR: handler.on_selectable_error(*this); break; case PN_SELECTABLE_FINAL: handler.on_selectable_final(*this); break; default: - throw error(MSG("Invalid Proton event type " << type_)); + throw error(MSG("Invalid Proton event type " << type)); } } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/27cea74f/proton-c/bindings/cpp/src/proton_event.hpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/proton_event.hpp b/proton-c/bindings/cpp/src/proton_event.hpp index 37ba63d..2d6b37f 100644 --- a/proton-c/bindings/cpp/src/proton_event.hpp +++ b/proton-c/bindings/cpp/src/proton_event.hpp @@ -21,7 +21,6 @@ * under the License. * */ -#include "proton/link.hpp" #include "proton/event.h" @@ -29,8 +28,6 @@ namespace proton { class proton_handler; class container; -class connection; -class connection_engine; /** Event information for a proton::proton_handler */ class proton_event @@ -267,27 +264,21 @@ class proton_event }; ///@} - proton_event(pn_event_t *, pn_event_type_t, class container*); + proton_event(pn_event_t *ce, class container *c) : + pn_event_(ce), + container_(c) + {} - std::string name() const; + pn_event_t* pn_event() const { return pn_event_; } + class container* container() const { return container_; } - void dispatch(proton_handler& h); - - class container* container() const; - - class transport transport() const; - class connection connection() const; - class session session() const; - class link link() const; + /// Get type of event + event_type type() const { return event_type(pn_event_type(pn_event_)); } - /** Get type of event */ - event_type type() const; - - pn_event_t* pn_event() const; + void dispatch(proton_handler& h); private: - mutable pn_event_t *pn_event_; - event_type type_; + pn_event_t *pn_event_; class container *container_; }; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
