PROTON-1182: [C++ binding] Tidy up and fix link iterators
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/52338b8c Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/52338b8c Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/52338b8c Branch: refs/heads/master Commit: 52338b8c9b44e07464c28b47371b69cc40acdaaf Parents: 5f5ae93 Author: Andrew Stitcher <[email protected]> Authored: Tue Apr 26 15:08:34 2016 -0400 Committer: Andrew Stitcher <[email protected]> Committed: Tue Apr 26 18:16:09 2016 -0400 ---------------------------------------------------------------------- proton-c/bindings/cpp/include/proton/receiver.hpp | 12 +++++++++--- proton-c/bindings/cpp/include/proton/sender.hpp | 12 +++++++++--- proton-c/bindings/cpp/src/session.cpp | 5 +++-- 3 files changed, 21 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/52338b8c/proton-c/bindings/cpp/include/proton/receiver.hpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/include/proton/receiver.hpp b/proton-c/bindings/cpp/include/proton/receiver.hpp index be47481..d0eb6ec 100644 --- a/proton-c/bindings/cpp/include/proton/receiver.hpp +++ b/proton-c/bindings/cpp/include/proton/receiver.hpp @@ -63,16 +63,22 @@ PN_CPP_CLASS_EXTERN receiver : public internal::link { }; class receiver_iterator : public internal::iter_base<receiver, receiver_iterator> { - public: ///@cond INTERNAL - explicit receiver_iterator(receiver r = 0, pn_session_t* s = 0) : - internal::iter_base<receiver, receiver_iterator>(r), session_(s) {} + explicit receiver_iterator(receiver r, pn_session_t* s = 0) : + iter_base<receiver, receiver_iterator>(r), session_(s) {} ///@endcond + + public: + explicit receiver_iterator() : + iter_base<receiver, receiver_iterator>(0), session_(0) {} /// Advance PN_CPP_EXTERN receiver_iterator operator++(); private: pn_session_t* session_; + + friend class connection; + friend class session; }; /// A range of receivers. http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/52338b8c/proton-c/bindings/cpp/include/proton/sender.hpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/include/proton/sender.hpp b/proton-c/bindings/cpp/include/proton/sender.hpp index 87b9697..6f13abe 100644 --- a/proton-c/bindings/cpp/include/proton/sender.hpp +++ b/proton-c/bindings/cpp/include/proton/sender.hpp @@ -71,16 +71,22 @@ PN_CPP_CLASS_EXTERN sender : public internal::link }; class sender_iterator : public internal::iter_base<sender, sender_iterator> { - public: ///@cond INTERNAL - explicit sender_iterator(sender snd = 0, pn_session_t* s = 0) : - internal::iter_base<sender, sender_iterator>(snd), session_(s) {} + sender_iterator(sender snd, pn_session_t* s = 0) : + iter_base<sender, sender_iterator>(snd), session_(s) {} ///@endcond + + public: + sender_iterator() : + iter_base<sender, sender_iterator>(0), session_(0) {} /// Advance PN_CPP_EXTERN sender_iterator operator++(); private: pn_session_t* session_; + + friend class connection; + friend class session; }; /// A range of senders. http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/52338b8c/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 6e34ec6..42384dd 100644 --- a/proton-c/bindings/cpp/src/session.cpp +++ b/proton-c/bindings/cpp/src/session.cpp @@ -83,7 +83,7 @@ sender_range session::senders() const { break; lnk = pn_link_next(lnk, 0); } - return sender_range(sender_iterator(lnk)); + return sender_range(sender_iterator(lnk, pn_object())); } receiver_range session::receivers() const { @@ -91,8 +91,9 @@ receiver_range session::receivers() const { while (lnk) { if (pn_link_is_receiver(lnk) && pn_link_session(lnk) == pn_object()) break; + lnk = pn_link_next(lnk, 0); } - return receiver_range(receiver_iterator(lnk)); + return receiver_range(receiver_iterator(lnk, pn_object())); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
