PROTON-1191: [C++ binding] Tidy up defintion of delivery_mode
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/d7e6e175 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/d7e6e175 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/d7e6e175 Branch: refs/heads/master Commit: d7e6e1753fb002748e9a4fff53c5ce5e6b676412 Parents: c3c477d Author: Andrew Stitcher <[email protected]> Authored: Thu May 5 14:44:29 2016 -0400 Committer: Andrew Stitcher <[email protected]> Committed: Thu May 5 15:20:41 2016 -0400 ---------------------------------------------------------------------- proton-c/bindings/cpp/include/proton/delivery_mode.hpp | 13 ++++++++++++- proton-c/bindings/cpp/src/receiver_options.cpp | 10 +++++----- proton-c/bindings/cpp/src/sender_options.cpp | 10 +++++----- 3 files changed, 22 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7e6e175/proton-c/bindings/cpp/include/proton/delivery_mode.hpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/include/proton/delivery_mode.hpp b/proton-c/bindings/cpp/include/proton/delivery_mode.hpp index 913f43b..fe420e6 100644 --- a/proton-c/bindings/cpp/include/proton/delivery_mode.hpp +++ b/proton-c/bindings/cpp/include/proton/delivery_mode.hpp @@ -25,7 +25,10 @@ namespace proton { /// The message delivery policy to establish when opening a link. -enum delivery_mode { +/// This structure imitates the newer C++11 "enum class" so that +/// The enumeration constants are in the delivery_mode namespace. +struct delivery_mode { + enum modes { // No set policy. The application must settle messages itself // according to its own policy. NONE = 0, @@ -37,6 +40,14 @@ enum delivery_mode { // settle until after the disposition notification is // received. AT_LEAST_ONCE + }; + + delivery_mode() : modes_(NONE) {} + delivery_mode(modes m) : modes_(m) {} + operator modes() { return modes_; } + +private: + modes modes_; }; } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7e6e175/proton-c/bindings/cpp/src/receiver_options.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/receiver_options.cpp b/proton-c/bindings/cpp/src/receiver_options.cpp index 733bd00..f39ea66 100644 --- a/proton-c/bindings/cpp/src/receiver_options.cpp +++ b/proton-c/bindings/cpp/src/receiver_options.cpp @@ -53,12 +53,12 @@ class receiver_options::impl { return link_context::get(unwrap(l)); } - static void set_delivery_mode(receiver l, enum delivery_mode mode) { + static void set_delivery_mode(receiver l, proton::delivery_mode mode) { switch (mode) { - case AT_MOST_ONCE: + case delivery_mode::AT_MOST_ONCE: pn_link_set_snd_settle_mode(unwrap(l), PN_SND_SETTLED); break; - case AT_LEAST_ONCE: + case delivery_mode::AT_LEAST_ONCE: pn_link_set_snd_settle_mode(unwrap(l), PN_SND_UNSETTLED); pn_link_set_rcv_settle_mode(unwrap(l), PN_RCV_FIRST); break; @@ -69,7 +69,7 @@ class receiver_options::impl { public: option<proton_handler*> handler; - option<enum delivery_mode> delivery_mode; + option<proton::delivery_mode> delivery_mode; option<bool> auto_accept; option<bool> auto_settle; option<int> credit_window; @@ -124,7 +124,7 @@ receiver_options& receiver_options::operator=(const receiver_options& x) { void receiver_options::update(const receiver_options& x) { impl_->update(*x.impl_); } receiver_options& receiver_options::handler(class handler *h) { impl_->handler = h->messaging_adapter_.get(); return *this; } -receiver_options& receiver_options::delivery_mode(enum delivery_mode m) {impl_->delivery_mode = m; return *this; } +receiver_options& receiver_options::delivery_mode(proton::delivery_mode m) {impl_->delivery_mode = m; return *this; } receiver_options& receiver_options::auto_accept(bool b) {impl_->auto_accept = b; return *this; } receiver_options& receiver_options::auto_settle(bool b) {impl_->auto_settle = b; return *this; } receiver_options& receiver_options::credit_window(int w) {impl_->credit_window = w; return *this; } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7e6e175/proton-c/bindings/cpp/src/sender_options.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/sender_options.cpp b/proton-c/bindings/cpp/src/sender_options.cpp index 9467c9e..ed030d9 100644 --- a/proton-c/bindings/cpp/src/sender_options.cpp +++ b/proton-c/bindings/cpp/src/sender_options.cpp @@ -51,12 +51,12 @@ class sender_options::impl { return link_context::get(unwrap(l)); } - static void set_delivery_mode(sender l, enum delivery_mode mode) { + static void set_delivery_mode(sender l, proton::delivery_mode mode) { switch (mode) { - case AT_MOST_ONCE: + case delivery_mode::AT_MOST_ONCE: pn_link_set_snd_settle_mode(unwrap(l), PN_SND_SETTLED); break; - case AT_LEAST_ONCE: + case delivery_mode::AT_LEAST_ONCE: pn_link_set_snd_settle_mode(unwrap(l), PN_SND_UNSETTLED); pn_link_set_rcv_settle_mode(unwrap(l), PN_RCV_FIRST); break; @@ -67,7 +67,7 @@ class sender_options::impl { public: option<proton_handler*> handler; - option<enum delivery_mode> delivery_mode; + option<proton::delivery_mode> delivery_mode; option<bool> auto_settle; option<source_options> source; option<target_options> target; @@ -112,7 +112,7 @@ sender_options& sender_options::operator=(const sender_options& x) { void sender_options::update(const sender_options& x) { impl_->update(*x.impl_); } sender_options& sender_options::handler(class handler *h) { impl_->handler = h->messaging_adapter_.get(); return *this; } -sender_options& sender_options::delivery_mode(enum delivery_mode m) {impl_->delivery_mode = m; return *this; } +sender_options& sender_options::delivery_mode(proton::delivery_mode m) {impl_->delivery_mode = m; return *this; } sender_options& sender_options::auto_settle(bool b) {impl_->auto_settle = b; return *this; } sender_options& sender_options::source(source_options &s) {impl_->source = s; return *this; } sender_options& sender_options::target(target_options &s) {impl_->target = s; return *this; } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
