Repository: qpid-proton Updated Branches: refs/heads/0.13.x 74c02eca6 -> fd9d961b6
PROTON-1247: Fix symbol export for transfer, delivery & tracker PROTON-1248: Allow API to query state of delivery and tracker Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/fd9d961b Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/fd9d961b Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/fd9d961b Branch: refs/heads/0.13.x Commit: fd9d961b642587dd5df63b96088721c7a3226243 Parents: 74c02ec Author: Andrew Stitcher <astitc...@apache.org> Authored: Mon Jun 27 16:38:20 2016 -0400 Committer: Andrew Stitcher <astitc...@apache.org> Committed: Thu Jun 30 13:59:11 2016 -0400 ---------------------------------------------------------------------- .../bindings/cpp/include/proton/delivery.hpp | 8 ++--- .../bindings/cpp/include/proton/transfer.hpp | 33 ++++++++------------ proton-c/bindings/cpp/src/delivery.cpp | 13 ++++++++ proton-c/bindings/cpp/src/transfer.cpp | 7 ----- 4 files changed, 30 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/fd9d961b/proton-c/bindings/cpp/include/proton/delivery.hpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/include/proton/delivery.hpp b/proton-c/bindings/cpp/include/proton/delivery.hpp index 53780a2..91fd143 100644 --- a/proton-c/bindings/cpp/include/proton/delivery.hpp +++ b/proton-c/bindings/cpp/include/proton/delivery.hpp @@ -52,16 +52,16 @@ class delivery : public transfer { // get from the different delivery modes. - Deferred /// Settle with ACCEPTED state. - PN_CPP_EXTERN void accept() { settle(ACCEPTED); } + PN_CPP_EXTERN void accept(); /// Settle with REJECTED state. - PN_CPP_EXTERN void reject() { settle(REJECTED); } + PN_CPP_EXTERN void reject(); /// Settle with RELEASED state. - PN_CPP_EXTERN void release() { settle(RELEASED); } + PN_CPP_EXTERN void release(); /// Settle with MODIFIED state. - PN_CPP_EXTERN void modify() { settle(MODIFIED); } + PN_CPP_EXTERN void modify(); /// @cond INTERNAL friend class internal::factory<delivery>; http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/fd9d961b/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 d9f38a9..c4f984a 100644 --- a/proton-c/bindings/cpp/include/proton/transfer.hpp +++ b/proton-c/bindings/cpp/include/proton/transfer.hpp @@ -40,6 +40,19 @@ class transfer : public internal::object<pn_delivery_t> { /// Create an empty transfer. transfer() : internal::object<pn_delivery_t>(0) {} + /// Delivery state values. + enum state { + NONE = 0, ///< Unknown state + RECEIVED = PN_RECEIVED, ///< Received but not yet settled + ACCEPTED = PN_ACCEPTED, ///< Settled as accepted + REJECTED = PN_REJECTED, ///< Settled as rejected + RELEASED = PN_RELEASED, ///< Settled as released + MODIFIED = PN_MODIFIED ///< Settled as modified + }; // AMQP spec 3.4 delivery State + + /// Get the remote state for a delivery. + PN_CPP_EXTERN enum state state() const; + /// Return the session for this transfer. PN_CPP_EXTERN class session session() const; @@ -55,26 +68,6 @@ class transfer : public internal::object<pn_delivery_t> { /// Return true if the transfer has been settled. PN_CPP_EXTERN bool settled() const; - protected: - /// Delivery state values. - enum state { - NONE = 0, ///< Unknown state - RECEIVED = PN_RECEIVED, ///< Received but not yet settled - ACCEPTED = PN_ACCEPTED, ///< Settled as accepted - REJECTED = PN_REJECTED, ///< Settled as rejected - RELEASED = PN_RELEASED, ///< Settled as released - MODIFIED = PN_MODIFIED ///< Settled as modified - }; // AMQP spec 3.4 delivery State - - /// Set the local state of the delivery. - void update(enum state state); - - /// Update and settle a delivery with the given delivery::state - void settle(enum state s); - - /// Get the remote state for a delivery. - enum state state() const; - /// @cond INTERNAL friend class internal::factory<transfer>; /// @endcond http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/fd9d961b/proton-c/bindings/cpp/src/delivery.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/delivery.cpp b/proton-c/bindings/cpp/src/delivery.cpp index 7effc52..cae2bf0 100644 --- a/proton-c/bindings/cpp/src/delivery.cpp +++ b/proton-c/bindings/cpp/src/delivery.cpp @@ -25,9 +25,22 @@ #include "proton_bits.hpp" +namespace { + +void settle_delivery(pn_delivery_t* o, uint64_t state) { + pn_delivery_update(o, state); + pn_delivery_settle(o); +} + +} + namespace proton { delivery::delivery(pn_delivery_t* d): transfer(make_wrapper(d)) {} receiver delivery::receiver() const { return make_wrapper<class receiver>(pn_delivery_link(pn_object())); } +void delivery::accept() { settle_delivery(pn_object(), ACCEPTED); } +void delivery::reject() { settle_delivery(pn_object(), REJECTED); } +void delivery::release() { settle_delivery(pn_object(), RELEASED); } +void delivery::modify() { settle_delivery(pn_object(), MODIFIED); } } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/fd9d961b/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 7331489..78b6c0e 100644 --- a/proton-c/bindings/cpp/src/transfer.cpp +++ b/proton-c/bindings/cpp/src/transfer.cpp @@ -41,12 +41,5 @@ bool transfer::settled() const { return pn_delivery_settled(pn_object()); } void transfer::settle() { pn_delivery_settle(pn_object()); } -void transfer::update(enum state state) { pn_delivery_update(pn_object(), state); } - -void transfer::settle(enum state state) { - update(state); - settle(); -} - enum transfer::state transfer::state() const { return static_cast<enum state>(pn_delivery_remote_state(pn_object())); } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org