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/12/02 15:14:38 UTC

svn commit: r1547027 - in /qpid/proton/trunk: proton-c/bindings/python/proton.py proton-c/src/messenger/messenger.c tests/python/proton_tests/messenger.py

Author: rhs
Date: Mon Dec  2 14:14:38 2013
New Revision: 1547027

URL: http://svn.apache.org/r1547027
Log:
PROTON-290: applied updated patch from Bozo

Modified:
    qpid/proton/trunk/proton-c/bindings/python/proton.py
    qpid/proton/trunk/proton-c/src/messenger/messenger.c
    qpid/proton/trunk/tests/python/proton_tests/messenger.py

Modified: qpid/proton/trunk/proton-c/bindings/python/proton.py
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/bindings/python/proton.py?rev=1547027&r1=1547026&r2=1547027&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/trunk/proton-c/bindings/python/proton.py Mon Dec  2 14:14:38 2013
@@ -483,6 +483,18 @@ first message.
     disp = pn_messenger_status(self._mng, tracker);
     return STATUSES.get(disp, disp)
 
+  def buffered(self, tracker):
+    """
+    Checks if the delivery associated with the given tracker is still
+    waiting to be sent.
+
+    @type tracker: tracker
+    @param tracker: the tracker whose status is to be retrieved
+
+    @return true if delivery is still buffered
+    """
+    return pn_messenger_buffered(self._mng, tracker);
+
   def settle(self, tracker=None):
     """
     Frees a L{Messenger} from tracking the status associated with a given

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=1547027&r1=1547026&r2=1547027&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/messenger.c Mon Dec  2 14:14:38 2013
@@ -1419,7 +1419,12 @@ bool pn_messenger_buffered(pn_messenger_
   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);
+    if (d) {
+      bool b = pn_delivery_buffered(d);
+      return b;
+    } else {
+      return true;
+    }
   } else {
     return false;
   }

Modified: qpid/proton/trunk/tests/python/proton_tests/messenger.py
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/tests/python/proton_tests/messenger.py?rev=1547027&r1=1547026&r2=1547027&view=diff
==============================================================================
--- qpid/proton/trunk/tests/python/proton_tests/messenger.py (original)
+++ qpid/proton/trunk/tests/python/proton_tests/messenger.py Mon Dec  2 14:14:38 2013
@@ -332,6 +332,33 @@ class MessengerTest(Test):
   def testIncomingQueueBiggerThanSessionWindow(self):
     self.testIncomingQueueBiggerThanWindow(2048)
 
+  def testBuffered(self):
+    self.client.outgoing_window = 1000
+    self.client.incoming_window = 1000
+    self.start();
+    assert self.server_received == 0
+    buffering = 0
+    count = 100
+    for i in range(count):
+      msg = Message()
+      msg.address="amqp://0.0.0.0:12345"
+      msg.subject="Hello World!"
+      msg.body = "First the world, then the galaxy!"
+      t = self.client.put(msg)
+      buffered = self.client.buffered(t)
+      # allow transition from False to True, but not back
+      if buffered:
+          buffering += 1
+      else:
+        assert not buffering, ("saw %s buffered deliveries before?" % buffering)
+
+    while self.client.outgoing:
+        last = self.client.outgoing
+        self.client.send()
+        print "sent ", last - self.client.outgoing
+
+    assert self.server_received == count
+
   def test_proton222(self):
     self.start()
     msg = Message()



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org