PROTON-1481: [C++ binding] Simplify code to use convenience functions
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/ca446eac Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/ca446eac Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/ca446eac Branch: refs/heads/master Commit: ca446eac8d56ae9510f4ac5dbb1a9ab3dba93ac5 Parents: bf3a2b4 Author: Andrew Stitcher <[email protected]> Authored: Thu May 18 14:14:58 2017 -0400 Committer: Andrew Stitcher <[email protected]> Committed: Fri Jul 21 12:50:06 2017 -0400 ---------------------------------------------------------------------- .../bindings/cpp/include/proton/thread_safe.hpp | 17 ++--------------- .../bindings/cpp/include/proton/work_queue.hpp | 9 --------- 2 files changed, 2 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ca446eac/proton-c/bindings/cpp/include/proton/thread_safe.hpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/include/proton/thread_safe.hpp b/proton-c/bindings/cpp/include/proton/thread_safe.hpp index e5f5303..04e39df 100644 --- a/proton-c/bindings/cpp/include/proton/thread_safe.hpp +++ b/proton-c/bindings/cpp/include/proton/thread_safe.hpp @@ -63,12 +63,6 @@ template <class T> class thread_safe : private internal::pn_ptr_base, private internal::endpoint_traits<T> { typedef typename T::pn_type pn_type; - struct inject_decref : public void_function0 { - pn_type* ptr_; - inject_decref(pn_type* p) : ptr_(p) {} - void operator()() PN_CPP_OVERRIDE { decref(ptr_); delete this; } - }; - public: /// @cond INTERNAL static void operator delete(void*) {} @@ -76,15 +70,8 @@ class thread_safe : private internal::pn_ptr_base, private internal::endpoint_tr ~thread_safe() { if (ptr()) { - if (!!work_queue()) { -#if PN_CPP_HAS_STD_BIND - work_queue().add(std::bind(&decref, ptr())); -#else - work_queue().add(*new inject_decref(ptr())); -#endif - } else { - decref(ptr()); - } + if (!!work_queue().impl_) defer(&work_queue(), &decref, (void*)ptr()); + else decref(ptr()); } } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ca446eac/proton-c/bindings/cpp/include/proton/work_queue.hpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/include/proton/work_queue.hpp b/proton-c/bindings/cpp/include/proton/work_queue.hpp index 4d843c2..fe739f5 100644 --- a/proton-c/bindings/cpp/include/proton/work_queue.hpp +++ b/proton-c/bindings/cpp/include/proton/work_queue.hpp @@ -87,15 +87,6 @@ class PN_CPP_CLASS_EXTERN work_queue { PN_CPP_EXTERN ~work_queue(); -#if PN_CPP_HAS_EXPLICIT_CONVERSIONS - /// When using C++11 (or later) you can use work_queue in a bool context - /// to indicate if there is an event loop set. - PN_CPP_EXTERN explicit operator bool() const { return bool(impl_); } -#endif - - /// No event loop set. - PN_CPP_EXTERN bool operator !() const { return !impl_; } - /// Add work to the work queue: f() will be called serialised with other work in the queue: /// deferred and possibly in another thread. /// --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
