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