added drain_mode flag to bindings; made pn_flowcontroller work with draining links
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/4126e972 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/4126e972 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/4126e972 Branch: refs/heads/master Commit: 4126e97244844a0fb47a34208c8727a89052227b Parents: 9068021 Author: Rafael Schloming <r...@alum.mit.edu> Authored: Tue Feb 10 16:49:15 2015 -0500 Committer: Rafael Schloming <r...@alum.mit.edu> Committed: Tue Feb 10 16:49:15 2015 -0500 ---------------------------------------------------------------------- proton-c/bindings/python/proton/__init__.py | 8 ++++++++ proton-c/src/handlers/flowcontroller.c | 8 +++----- 2 files changed, 11 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4126e972/proton-c/bindings/python/proton/__init__.py ---------------------------------------------------------------------- diff --git a/proton-c/bindings/python/proton/__init__.py b/proton-c/bindings/python/proton/__init__.py index 58c442d..d41a06d 100644 --- a/proton-c/bindings/python/proton/__init__.py +++ b/proton-c/bindings/python/proton/__init__.py @@ -2811,6 +2811,14 @@ class Receiver(Link): self._check(n) return bytes + def _get_drain(self): + return pn_link_get_drain(self._impl) + + def _set_drain(self, b): + pn_link_set_drain(self._impl, bool(b)) + + drain_mode = property(_get_drain, _set_drain) + def drain(self, n): pn_link_drain(self._impl, n) http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4126e972/proton-c/src/handlers/flowcontroller.c ---------------------------------------------------------------------- diff --git a/proton-c/src/handlers/flowcontroller.c b/proton-c/src/handlers/flowcontroller.c index 903dfe4..91c97ed 100644 --- a/proton-c/src/handlers/flowcontroller.c +++ b/proton-c/src/handlers/flowcontroller.c @@ -39,17 +39,15 @@ static void pni_topup(pn_link_t *link, int window) { static void pn_flowcontroller_dispatch(pn_handler_t *handler, pn_event_t *event) { pni_flowcontroller_t *fc = pni_flowcontroller(handler); int window = fc->window; + pn_link_t *link = pn_event_link(event); switch (pn_event_type(event)) { case PN_LINK_LOCAL_OPEN: case PN_LINK_REMOTE_OPEN: case PN_LINK_FLOW: case PN_DELIVERY: - { - pn_link_t *link = pn_event_link(event); - if (pn_link_is_receiver(link)) { - pni_topup(link, window); - } + if (pn_link_is_receiver(link) && !pn_link_drained(link)) { + pni_topup(link, window); } break; default: --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org