Interface StreamReceiver
- All Superinterfaces:
AutoCloseable
,Link<StreamReceiver>
- All Known Implementing Classes:
ClientStreamReceiver
Transfer
frames from
the remote.-
Method Summary
Modifier and TypeMethodDescriptionaddCredit
(int credits) Adds credit to theStreamReceiver
link for use when the receiver has not been configured with a credit window.drain()
Requests the remote to drain previously granted credit for thisStreamReceiver
link.long
Returns the number of Deliveries that are currently held in theReceiver
delivery queue.receive()
Blocking receive method that waits forever for the remote to provide aStreamReceiverMessage
for consumption.Blocking receive method that waits the given time interval for the remote to provide aStreamReceiverMessage
for consumption.Non-blocking receive method that either returns a message is one is immediately available or returns null if none is currently at hand.Methods inherited from interface org.apache.qpid.protonj2.client.Link
address, client, close, close, closeAsync, closeAsync, connection, desiredCapabilities, detach, detach, detachAsync, detachAsync, offeredCapabilities, openFuture, properties, session, source, target
-
Method Details
-
addCredit
Adds credit to theStreamReceiver
link for use when the receiver has not been configured with a credit window. When credit window is configured credit replenishment is automatic and calling this method will result in an exception indicating that the operation is invalid.If the
Receiver
is draining and this method is called an exception will be thrown to indicate that credit cannot be replenished until the remote has drained the existing link credit.- Parameters:
credits
- The number of credits to add to theReceiver
link.- Returns:
- this
StreamReceiver
instance. - Throws:
ClientException
- if an error occurs while attempting to add newStreamReceiver
link credit.
-
drain
Requests the remote to drain previously granted credit for thisStreamReceiver
link.- Returns:
- a
Future
that will be completed when the remote drains thisStreamReceiver
link. - Throws:
ClientException
- if an error occurs while attempting to drain the link credit.
-
receive
Blocking receive method that waits forever for the remote to provide aStreamReceiverMessage
for consumption.Receive calls will only grant credit on their own if a credit window is configured in the
StreamReceiverOptions
which is done by default. If the client application has configured no credit window than this method will not grant any credit when it enters the wait for new incoming messages.- Returns:
- a new
Delivery
received from the remote. - Throws:
ClientException
- if theStreamReceiver
or its parent is closed when the call to receive is made.
-
receive
Blocking receive method that waits the given time interval for the remote to provide aStreamReceiverMessage
for consumption. The amount of time this method blocks is based on the timeout value. If the timeout is negative then it blocks until a Delivery is received. If the timeout is equal to zero then it will not block and simply return aStreamReceiverMessage
if one is available locally. If the timeout value is greater than zero then it blocks up to timeout amount of time.Receive calls will only grant credit on their own if a credit window is configured in the
StreamReceiverOptions
which is done by default. If the client application has not configured a credit window or granted credit manually this method will not automatically grant any credit when it enters the wait for a new incomingStreamReceiverMessage
.- Parameters:
timeout
- The timeout value used to control how long the receive method waits for a newDelivery
.unit
- The unit of time that the given timeout represents.- Returns:
- a new
StreamReceiverMessage
received from the remote. - Throws:
ClientException
- if theStreamReceiver
or its parent is closed when the call to receive is made.
-
tryReceive
Non-blocking receive method that either returns a message is one is immediately available or returns null if none is currently at hand.- Returns:
- a new
StreamReceiverMessage
received from the remote or null if no pending deliveries are available. - Throws:
ClientException
- if theStreamReceiver
or its parent is closed when the call to try to receive is made.
-
queuedDeliveries
Returns the number of Deliveries that are currently held in theReceiver
delivery queue. This number is likely to change immediately following the call as more deliveries arrive but can be used to determine if any pendingDelivery
work is ready.- Returns:
- the number of deliveries that are currently buffered locally.
- Throws:
ClientException
- if an error occurs while attempting to fetch the queue count.
-