You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2014/09/23 20:04:37 UTC
svn commit: r1627106 - in /qpid/proton/trunk/proton-c:
include/proton/messenger.h src/messenger/messenger.c
Author: rhs
Date: Tue Sep 23 18:04:36 2014
New Revision: 1627106
URL: http://svn.apache.org/r1627106
Log:
PROTON-680: link and delivery accessors (patch from dominic)
Modified:
qpid/proton/trunk/proton-c/include/proton/messenger.h
qpid/proton/trunk/proton-c/src/messenger/messenger.c
Modified: qpid/proton/trunk/proton-c/include/proton/messenger.h
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/include/proton/messenger.h?rev=1627106&r1=1627105&r2=1627106&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/include/proton/messenger.h (original)
+++ qpid/proton/trunk/proton-c/include/proton/messenger.h Tue Sep 23 18:04:36 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/trunk/proton-c/src/messenger/messenger.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/messenger/messenger.c?rev=1627106&r1=1627105&r2=1627106&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/messenger.c Tue Sep 23 18:04:36 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-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org