Author: gsim Date: Fri Oct 10 12:56:10 2014 New Revision: 1630847 URL: http://svn.apache.org/r1630847 Log: PROTON-680: link and delivery accessors (patch from dominic)
Modified: qpid/proton/branches/examples/proton-c/include/proton/messenger.h qpid/proton/branches/examples/proton-c/src/messenger/messenger.c Modified: qpid/proton/branches/examples/proton-c/include/proton/messenger.h URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/messenger.h?rev=1630847&r1=1630846&r2=1630847&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/include/proton/messenger.h (original) +++ qpid/proton/branches/examples/proton-c/include/proton/messenger.h Fri Oct 10 12:56:10 2014 @@ -487,6 +487,18 @@ pn_messenger_subscribe_ttl(pn_messenger_ pn_seconds_t timeout); /** + * Get a link based on link name and whether the link is a sender or receiver + * + * @param[in] messenger the messenger to get the link from + * @param[in] address the link address that identifies the link to receive + * @param[in] sender true if the link is a sender, false if the link is a + * receiver + * @return a link, or NULL if no link matches the address / sender parameters + */ +PN_EXTERN pn_link_t *pn_messenger_get_link(pn_messenger_t *messenger, + const char *address, bool sender); + +/** * Get a subscription's application context. * * See ::pn_subscription_set_context(). @@ -538,6 +550,20 @@ PN_EXTERN int pn_messenger_put(pn_messen PN_EXTERN pn_status_t pn_messenger_status(pn_messenger_t *messenger, pn_tracker_t tracker); /** + * Get delivery information about a delivery. + * + * Returns the delivery information associated with the supplied tracker. + * This may return NULL if the tracker has fallen outside the + * incoming/outgoing tracking windows of the messenger. + * + * @param[in] messenger the messenger + * @param[in] tracker the tracker identifying the delivery + * @return a pn_delivery_t representing the delivery. + */ +PN_EXTERN pn_delivery_t *pn_messenger_delivery(pn_messenger_t *messenger, + pn_tracker_t tracker); + +/** * Check if the delivery associated with a given tracker is still * waiting to be sent. * Modified: qpid/proton/branches/examples/proton-c/src/messenger/messenger.c URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/messenger.c?rev=1630847&r1=1630846&r2=1630847&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/src/messenger/messenger.c (original) +++ qpid/proton/branches/examples/proton-c/src/messenger/messenger.c Fri Oct 10 12:56:10 2014 @@ -1669,13 +1669,12 @@ pn_connection_t *pn_messenger_resolve(pn return connection; } -pn_link_t *pn_messenger_link(pn_messenger_t *messenger, const char *address, - bool sender, pn_seconds_t timeout) +PN_EXTERN pn_link_t *pn_messenger_get_link(pn_messenger_t *messenger, + const char *address, bool sender) { char *name = NULL; pn_connection_t *connection = pn_messenger_resolve(messenger, address, &name); if (!connection) return NULL; - pn_connection_ctx_t *cctx = (pn_connection_ctx_t *) pn_connection_get_context(connection); pn_link_t *link = pn_link_head(connection, PN_LOCAL_ACTIVE); while (link) { @@ -1688,6 +1687,22 @@ pn_link_t *pn_messenger_link(pn_messenge } link = pn_link_next(link, PN_LOCAL_ACTIVE); } + return NULL; +} + +pn_link_t *pn_messenger_link(pn_messenger_t *messenger, const char *address, + bool sender, pn_seconds_t timeout) +{ + char *name = NULL; + pn_connection_t *connection = pn_messenger_resolve(messenger, address, &name); + if (!connection) + return NULL; + pn_connection_ctx_t *cctx = + (pn_connection_ctx_t *)pn_connection_get_context(connection); + + pn_link_t *link = pn_messenger_get_link(messenger, address, sender); + if (link) + return link; pn_session_t *ssn = pn_session(connection); pn_session_open(ssn); @@ -1992,6 +2007,18 @@ pn_status_t pn_messenger_status(pn_messe } } +pn_delivery_t *pn_messenger_delivery(pn_messenger_t *messenger, + pn_tracker_t tracker) +{ + pni_store_t *store = pn_tracker_store(messenger, tracker); + pni_entry_t *e = pni_store_entry(store, pn_tracker_sequence(tracker)); + if (e) { + return pni_entry_get_delivery(e); + } else { + return NULL; + } +} + bool pn_messenger_buffered(pn_messenger_t *messenger, pn_tracker_t tracker) { pni_store_t *store = pn_tracker_store(messenger, tracker); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org