summaryrefslogtreecommitdiff
path: root/qpid/java/amqp-1-0-client/src
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2012-11-02 16:39:57 +0000
committerRobert Godfrey <rgodfrey@apache.org>2012-11-02 16:39:57 +0000
commit030bf18c007916798faf8e32a787bcc01919a6f0 (patch)
tree2794bc26f7cf099d528e137c74876bf44218e903 /qpid/java/amqp-1-0-client/src
parent3afff8ab3bd4e85592cd907cde524a7db4bc4271 (diff)
downloadqpid-python-030bf18c007916798faf8e32a787bcc01919a6f0.tar.gz
QPID-4411 : QPID JMS QueueBrowser should defer getting messages until getEnumeration() is called.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1405042 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/amqp-1-0-client/src')
-rw-r--r--qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Receiver.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Receiver.java b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Receiver.java
index 581744778e..8b792db1f1 100644
--- a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Receiver.java
+++ b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Receiver.java
@@ -503,6 +503,37 @@ public class Receiver implements DeliveryStateHandler
_endpoint.drain();
}
+ /**
+ * Waits for the receiver to drain or a message to be available to be received.
+ * @return true if the receiver has been drained.
+ */
+ public boolean drainWait()
+ {
+ final Object lock = _endpoint.getLock();
+ synchronized(lock)
+ {
+ try
+ {
+ while( _prefetchQueue.peek()==null && !_endpoint.isDrained() && !_endpoint.isDetached() )
+ {
+ lock.wait();
+ }
+ }
+ catch (InterruptedException e)
+ {
+ }
+ }
+ return _prefetchQueue.peek()==null && _endpoint.isDrained();
+ }
+
+ /**
+ * Clears the receiver drain so that message delivery can resume.
+ */
+ public void clearDrain()
+ {
+ _endpoint.clearDrain();
+ }
+
public void setCreditWithTransaction(final UnsignedInteger credit, final Transaction txn)
{
_endpoint.setLinkCredit(credit);