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]

Reply via email to