NO-JIRA: Update API doc for pn_delivery_settle, add public function pn_delivery_current
pn_delivery_settle() has an undocumented side effect: if the delivery is the current delivery on its link, then the link is automatically advanaced. Updated the API doc to explain this side effect, and also made public the helper function pn_delivery_current() so callers can easily tell whether or not this side effect will occur. Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/aad0884c Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/aad0884c Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/aad0884c Branch: refs/heads/kgiusti-python3 Commit: aad0884c9cac9e6ff2b92eeb40bf8ff3f5893b16 Parents: bcf01ac Author: Alan Conway <[email protected]> Authored: Thu Apr 30 11:15:30 2015 -0400 Committer: Alan Conway <[email protected]> Committed: Thu Apr 30 11:15:30 2015 -0400 ---------------------------------------------------------------------- proton-c/include/proton/delivery.h | 11 ++++++++++- proton-c/src/engine/engine.c | 10 +++++----- 2 files changed, 15 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/aad0884c/proton-c/include/proton/delivery.h ---------------------------------------------------------------------- diff --git a/proton-c/include/proton/delivery.h b/proton-c/include/proton/delivery.h index 7eb0dfe..2f7f965 100644 --- a/proton-c/include/proton/delivery.h +++ b/proton-c/include/proton/delivery.h @@ -237,13 +237,22 @@ PN_EXTERN void pn_delivery_update(pn_delivery_t *delivery, uint64_t state); */ PN_EXTERN void pn_delivery_clear(pn_delivery_t *delivery); -//int pn_delivery_format(pn_delivery_t *delivery); +/** + * Return true if delivery is the current delivery for its link. + * + * @param[in] delivery a delivery object + * @return true if delivery is the current delivery for its link. + */ +PN_EXTERN bool pn_delivery_current(pn_delivery_t *delivery); /** * Settle a delivery. * * A settled delivery can never be used again. * + * NOTE: if pn_delivery_current(delivery) is true before the call then + * pn_link_advance(pn_delivery_link(deliver)) is called automatically. + * * @param[in] delivery a delivery object */ PN_EXTERN void pn_delivery_settle(pn_delivery_t *delivery); http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/aad0884c/proton-c/src/engine/engine.c ---------------------------------------------------------------------- diff --git a/proton-c/src/engine/engine.c b/proton-c/src/engine/engine.c index 2454aa2..67cc882 100644 --- a/proton-c/src/engine/engine.c +++ b/proton-c/src/engine/engine.c @@ -1553,7 +1553,7 @@ pn_delivery_t *pn_unsettled_next(pn_delivery_t *delivery) return d; } -bool pn_is_current(pn_delivery_t *delivery) +bool pn_delivery_current(pn_delivery_t *delivery) { pn_link_t *link = delivery->link; return pn_link_current(link) == delivery; @@ -1568,7 +1568,7 @@ void pn_delivery_dump(pn_delivery_t *d) "remote.settled=%u, updated=%u, current=%u, writable=%u, readable=%u, " "work=%u}", tag, d->local.type, d->remote.type, d->local.settled, - d->remote.settled, d->updated, pn_is_current(d), + d->remote.settled, d->updated, pn_delivery_current(d), pn_delivery_writable(d), pn_delivery_readable(d), d->work); } @@ -1789,7 +1789,7 @@ void pn_delivery_settle(pn_delivery_t *delivery) assert(delivery); if (!delivery->local.settled) { pn_link_t *link = delivery->link; - if (pn_is_current(delivery)) { + if (pn_delivery_current(delivery)) { pn_link_advance(link); } @@ -1955,14 +1955,14 @@ bool pn_delivery_writable(pn_delivery_t *delivery) if (!delivery) return false; pn_link_t *link = delivery->link; - return pn_link_is_sender(link) && pn_is_current(delivery) && pn_link_credit(link) > 0; + return pn_link_is_sender(link) && pn_delivery_current(delivery) && pn_link_credit(link) > 0; } bool pn_delivery_readable(pn_delivery_t *delivery) { if (delivery) { pn_link_t *link = delivery->link; - return pn_link_is_receiver(link) && pn_is_current(delivery); + return pn_link_is_receiver(link) && pn_delivery_current(delivery); } else { return false; } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
