Package org.xnio.conduits
Class PushBackStreamSourceConduit
java.lang.Object
org.xnio.conduits.AbstractConduit<StreamSourceConduit>
org.xnio.conduits.AbstractSourceConduit<StreamSourceConduit>
org.xnio.conduits.AbstractStreamSourceConduit<StreamSourceConduit>
org.xnio.conduits.PushBackStreamSourceConduit
- All Implemented Interfaces:
Conduit
,SourceConduit
,StreamSourceConduit
public final class PushBackStreamSourceConduit
extends AbstractStreamSourceConduit<StreamSourceConduit>
implements StreamSourceConduit
A stream source conduit which allows buffers to be "pushed back" to the head of the stream.
- Author:
- David M. Lloyd
-
Field Summary
Fields inherited from class org.xnio.conduits.AbstractConduit
next
-
Constructor Summary
ConstructorsConstructorDescriptionConstruct a new instance. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Block until this channel becomes readable again.void
awaitReadable
(long time, TimeUnit timeUnit) Block until this conduit becomes readable again, or until the timeout expires.void
pushBack
(Pooled<ByteBuffer> pooledBuffer) Push a buffer back to the head of the stream.int
read
(ByteBuffer dst) Read a sequence of bytes from this conduit to the given buffer.long
read
(ByteBuffer[] dsts, int offs, int len) Read a sequence of bytes from this conduit to the given buffers.void
Indicate that the conduit'sReadReadyHandler
should be invoked as soon as data can be read without blocking.void
setReadReadyHandler
(ReadReadyHandler handler) Set the handler which should receive readiness notifications.void
Indicate that no more data will be read from this conduit.long
transferTo
(long position, long count, FileChannel target) Transfers bytes into the given file from this channel.long
transferTo
(long count, ByteBuffer throughBuffer, StreamSinkChannel target) Transfers bytes into the given channel target.Methods inherited from class org.xnio.conduits.AbstractSourceConduit
getReadThread, isReadResumed, isReadShutdown, suspendReads, wakeupReads
Methods inherited from class org.xnio.conduits.AbstractConduit
getWorker
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.xnio.conduits.SourceConduit
getReadThread, isReadResumed, isReadShutdown, suspendReads, wakeupReads
-
Constructor Details
-
PushBackStreamSourceConduit
Construct a new instance.- Parameters:
next
- the delegate conduit to set
-
-
Method Details
-
resumeReads
public void resumeReads()Description copied from interface:SourceConduit
Indicate that the conduit'sReadReadyHandler
should be invoked as soon as data can be read without blocking.- Specified by:
resumeReads
in interfaceSourceConduit
- Overrides:
resumeReads
in classAbstractSourceConduit<StreamSourceConduit>
-
read
Description copied from interface:StreamSourceConduit
Read a sequence of bytes from this conduit to the given buffer.- Specified by:
read
in interfaceStreamSourceConduit
- Overrides:
read
in classAbstractStreamSourceConduit<StreamSourceConduit>
- Returns:
- the number of bytes (possibly 0) that were actually transferred, or -1 if the end of input was reached or
this conduit's
SourceConduit.terminateReads()
method was previously called - Throws:
IOException
- if an error occurs
-
read
Description copied from interface:StreamSourceConduit
Read a sequence of bytes from this conduit to the given buffers.- Specified by:
read
in interfaceStreamSourceConduit
- Overrides:
read
in classAbstractStreamSourceConduit<StreamSourceConduit>
- Parameters:
offs
- the offset into the buffer arraylen
- the number of buffers to fill- Returns:
- the number of bytes (possibly 0) that were actually transferred, or -1 if the end of input was reached or
this conduit's
SourceConduit.terminateReads()
method was previously called - Throws:
IOException
- if an error occurs
-
transferTo
Description copied from interface:StreamSourceConduit
Transfers bytes into the given file from this channel.- Specified by:
transferTo
in interfaceStreamSourceConduit
- Overrides:
transferTo
in classAbstractStreamSourceConduit<StreamSourceConduit>
- Parameters:
position
- the position within the file from which the transfer is to begincount
- the number of bytes to be transferredtarget
- the file to write to- Returns:
- the number of bytes (possibly 0) that were actually transferred
- Throws:
IOException
- if an I/O error occurs
-
transferTo
public long transferTo(long count, ByteBuffer throughBuffer, StreamSinkChannel target) throws IOException Description copied from interface:StreamSourceConduit
Transfers bytes into the given channel target. On entry,throughBuffer
will be cleared. On exit, the buffer will be flipped for emptying, and may possibly be empty or may contain data. If this method returns a value less thancount
, then the remaining data inthroughBuffer
may contain data read from this channel which must be written totarget
to complete the operation.- Specified by:
transferTo
in interfaceStreamSourceConduit
- Overrides:
transferTo
in classAbstractStreamSourceConduit<StreamSourceConduit>
- Parameters:
count
- the number of bytes to be transferredthroughBuffer
- the buffer to copy through.target
- the destination to write to- Returns:
- the number of bytes (possibly 0) that were actually transferred, or -1 if the end of input was reached
- Throws:
IOException
- if an I/O error occurs
-
awaitReadable
Description copied from interface:SourceConduit
Block until this channel becomes readable again. This method may return spuriously before the channel becomes readable.- Specified by:
awaitReadable
in interfaceSourceConduit
- Overrides:
awaitReadable
in classAbstractSourceConduit<StreamSourceConduit>
- Throws:
IOException
- if an I/O error occurs
-
awaitReadable
Description copied from interface:SourceConduit
Block until this conduit becomes readable again, or until the timeout expires. This method may return spuriously before the conduit becomes readable or the timeout expires.- Specified by:
awaitReadable
in interfaceSourceConduit
- Overrides:
awaitReadable
in classAbstractSourceConduit<StreamSourceConduit>
- Parameters:
time
- the time to waittimeUnit
- the time unit- Throws:
IOException
- if an I/O error occurs
-
terminateReads
Description copied from interface:SourceConduit
Indicate that no more data will be read from this conduit. If unread data exists, an exception may be thrown.- Specified by:
terminateReads
in interfaceSourceConduit
- Overrides:
terminateReads
in classAbstractSourceConduit<StreamSourceConduit>
- Throws:
IOException
- if there was a problem
-
setReadReadyHandler
Description copied from interface:SourceConduit
Set the handler which should receive readiness notifications. A filter may pass this invocation on to the filter it wraps, or it may substitute itself.- Specified by:
setReadReadyHandler
in interfaceSourceConduit
- Overrides:
setReadReadyHandler
in classAbstractSourceConduit<StreamSourceConduit>
-
pushBack
Push a buffer back to the head of the stream. Once the buffer data is consumed, it will be released back to its original pool (if any).- Parameters:
pooledBuffer
- the buffer to push back
-