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 2013/10/24 18:53:11 UTC
svn commit: r1535439 - in /qpid/proton/trunk/proton-c:
include/proton/engine.h include/proton/messenger.h src/engine/engine.c
src/messenger/messenger.c src/transport/transport.c
Author: rhs
Date: Thu Oct 24 16:53:11 2013
New Revision: 1535439
URL: http://svn.apache.org/r1535439
Log:
PROTON-393: applied (modified) patch from Bozo
Modified:
qpid/proton/trunk/proton-c/include/proton/engine.h
qpid/proton/trunk/proton-c/include/proton/messenger.h
qpid/proton/trunk/proton-c/src/engine/engine.c
qpid/proton/trunk/proton-c/src/messenger/messenger.c
qpid/proton/trunk/proton-c/src/transport/transport.c
Modified: qpid/proton/trunk/proton-c/include/proton/engine.h
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/include/proton/engine.h?rev=1535439&r1=1535438&r2=1535439&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/include/proton/engine.h (original)
+++ qpid/proton/trunk/proton-c/include/proton/engine.h Thu Oct 24 16:53:11 2013
@@ -553,6 +553,7 @@ PN_EXTERN void pn_delivery_settle(pn_del
PN_EXTERN void pn_delivery_dump(pn_delivery_t *delivery);
PN_EXTERN void *pn_delivery_get_context(pn_delivery_t *delivery);
PN_EXTERN void pn_delivery_set_context(pn_delivery_t *delivery, void *context);
+PN_EXTERN bool pn_delivery_buffered(pn_delivery_t *delivery);
// disposition
PN_EXTERN uint64_t pn_disposition_type(pn_disposition_t *disposition);
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=1535439&r1=1535438&r2=1535439&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/include/proton/messenger.h (original)
+++ qpid/proton/trunk/proton-c/include/proton/messenger.h Thu Oct 24 16:53:11 2013
@@ -317,12 +317,22 @@ PN_EXTERN int pn_messenger_put(pn_messen
* within your outgoing window.within your outgoing window.
*
* @param[in] messenger the messenger
- * @param[in] tracker the tracker identify the delivery
+ * @param[in] tracker the tracker identifying the delivery
*
* @return a status code for the delivery
*/
PN_EXTERN pn_status_t pn_messenger_status(pn_messenger_t *messenger, pn_tracker_t tracker);
+/** Checks if the delivery associated with the given tracker is still
+ * waiting to be sent.
+ *
+ * @param[in] messenger the messenger
+ * @param[in] tracker the tracker identifying the delivery
+ *
+ * @return true if delivery is still buffered
+ */
+PN_EXTERN bool pn_messenger_buffered(pn_messenger_t *messenger, pn_tracker_t tracker);
+
/** Frees a Messenger from tracking the status associated with a given
* tracker. Use the PN_CUMULATIVE flag to indicate everything up to
* (and including) the given tracker.
Modified: qpid/proton/trunk/proton-c/src/engine/engine.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/engine.c?rev=1535439&r1=1535438&r2=1535439&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/engine.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/engine.c Thu Oct 24 16:53:11 2013
@@ -980,6 +980,22 @@ pn_delivery_t *pn_delivery(pn_link_t *li
return delivery;
}
+bool pn_delivery_buffered(pn_delivery_t *delivery)
+{
+ assert(delivery);
+ if (delivery->settled) return false;
+ if (pn_link_is_sender(delivery->link)) {
+ pn_delivery_state_t *state = &delivery->state;
+ if (state->sent) {
+ return false;
+ } else {
+ return delivery->done || (pn_buffer_size(delivery->bytes) > 0);
+ }
+ } else {
+ return false;
+ }
+}
+
int pn_link_unsettled(pn_link_t *link)
{
return link->unsettled_count;
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=1535439&r1=1535438&r2=1535439&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/messenger.c Thu Oct 24 16:53:11 2013
@@ -1322,6 +1322,18 @@ pn_status_t pn_messenger_status(pn_messe
}
}
+bool pn_messenger_buffered(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) {
+ pn_delivery_t *d = pni_entry_get_delivery(e);
+ return d && pn_delivery_buffered(d);
+ } else {
+ return false;
+ }
+}
+
int pn_messenger_settle(pn_messenger_t *messenger, pn_tracker_t tracker, int flags)
{
pni_store_t *store = pn_tracker_store(messenger, tracker);
Modified: qpid/proton/trunk/proton-c/src/transport/transport.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/transport/transport.c?rev=1535439&r1=1535438&r2=1535439&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/transport/transport.c (original)
+++ qpid/proton/trunk/proton-c/src/transport/transport.c Thu Oct 24 16:53:11 2013
@@ -1065,21 +1065,6 @@ static pn_timestamp_t pn_tick_amqp(pn_io
return timeout;
}
-bool pn_delivery_buffered(pn_delivery_t *delivery)
-{
- if (delivery->settled) return false;
- if (pn_link_is_sender(delivery->link)) {
- pn_delivery_state_t *state = &delivery->state;
- if (state->sent) {
- return false;
- } else {
- return delivery->done || (pn_buffer_size(delivery->bytes) > 0);
- }
- } else {
- return false;
- }
-}
-
int pn_process_conn_setup(pn_transport_t *transport, pn_endpoint_t *endpoint)
{
if (endpoint->type == CONNECTION)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org