Package io.undertow.conduits
Class FixedLengthStreamSourceConduit
java.lang.Object
org.xnio.conduits.AbstractConduit<D>
org.xnio.conduits.AbstractSourceConduit<D>
org.xnio.conduits.AbstractStreamSourceConduit<org.xnio.conduits.StreamSourceConduit>
io.undertow.conduits.FixedLengthStreamSourceConduit
- All Implemented Interfaces:
org.xnio.conduits.Conduit
,org.xnio.conduits.SourceConduit
,org.xnio.conduits.StreamSourceConduit
public final class FixedLengthStreamSourceConduit
extends org.xnio.conduits.AbstractStreamSourceConduit<org.xnio.conduits.StreamSourceConduit>
A channel which reads data of a fixed length and calls a finish listener. When the finish listener is called,
it should examine the result of
getRemaining()
to see if more bytes were pending when the channel was
closed.- Author:
- David M. Lloyd, Flavia Rainone
-
Field Summary
Fields inherited from class org.xnio.conduits.AbstractConduit
next
-
Constructor Summary
ConstructorsConstructorDescriptionFixedLengthStreamSourceConduit
(org.xnio.conduits.StreamSourceConduit next, long contentLength, ConduitListener<? super FixedLengthStreamSourceConduit> finishListener) Construct a new instance.FixedLengthStreamSourceConduit
(org.xnio.conduits.StreamSourceConduit next, long contentLength, ConduitListener<? super FixedLengthStreamSourceConduit> finishListener, HttpServerExchange exchange) Construct a new instance. -
Method Summary
Modifier and TypeMethodDescriptionvoid
void
awaitReadable
(long time, TimeUnit timeUnit) long
Get the number of remaining bytes.boolean
int
read
(ByteBuffer dst) long
read
(ByteBuffer[] dsts) long
read
(ByteBuffer[] dsts, int offset, int length) void
void
long
transferTo
(long position, long count, FileChannel target) long
transferTo
(long count, ByteBuffer throughBuffer, org.xnio.channels.StreamSinkChannel target) void
Methods inherited from class org.xnio.conduits.AbstractSourceConduit
getReadThread, isReadShutdown, setReadReadyHandler, suspendReads
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.Conduit
getWorker
Methods inherited from interface org.xnio.conduits.SourceConduit
getReadThread, isReadShutdown, setReadReadyHandler, suspendReads
-
Constructor Details
-
FixedLengthStreamSourceConduit
public FixedLengthStreamSourceConduit(org.xnio.conduits.StreamSourceConduit next, long contentLength, ConduitListener<? super FixedLengthStreamSourceConduit> finishListener, HttpServerExchange exchange) Construct a new instance. The given listener is called once all the bytes are read from the stream or the stream is closed. This listener should cause the remaining data to be drained from the underlying stream if the underlying stream is to be reused.Calling this constructor will replace the read listener of the underlying channel. The listener should be restored from the
finishListener
object. The underlying stream should not be closed while this wrapper stream is active.- Parameters:
next
- the stream source channel to read fromcontentLength
- the amount of content to readfinishListener
- the listener to call once the stream is exhausted or closedexchange
- The server exchange. This is used to determine the max size
-
FixedLengthStreamSourceConduit
public FixedLengthStreamSourceConduit(org.xnio.conduits.StreamSourceConduit next, long contentLength, ConduitListener<? super FixedLengthStreamSourceConduit> finishListener) Construct a new instance. The given listener is called once all the bytes are read from the stream or the stream is closed. This listener should cause the remaining data to be drained from the underlying stream if the underlying stream is to be reused.Calling this constructor will replace the read listener of the underlying channel. The listener should be restored from the
finishListener
object. The underlying stream should not be closed while this wrapper stream is active.- Parameters:
next
- the stream source channel to read fromcontentLength
- the amount of content to readfinishListener
- the listener to call once the stream is exhausted or closed
-
-
Method Details
-
transferTo
- Specified by:
transferTo
in interfaceorg.xnio.conduits.StreamSourceConduit
- Overrides:
transferTo
in classorg.xnio.conduits.AbstractStreamSourceConduit<org.xnio.conduits.StreamSourceConduit>
- Throws:
IOException
-
transferTo
public long transferTo(long count, ByteBuffer throughBuffer, org.xnio.channels.StreamSinkChannel target) throws IOException - Specified by:
transferTo
in interfaceorg.xnio.conduits.StreamSourceConduit
- Overrides:
transferTo
in classorg.xnio.conduits.AbstractStreamSourceConduit<org.xnio.conduits.StreamSourceConduit>
- Throws:
IOException
-
read
- Specified by:
read
in interfaceorg.xnio.conduits.StreamSourceConduit
- Overrides:
read
in classorg.xnio.conduits.AbstractStreamSourceConduit<org.xnio.conduits.StreamSourceConduit>
- Throws:
IOException
-
read
- Throws:
IOException
-
read
- Specified by:
read
in interfaceorg.xnio.conduits.StreamSourceConduit
- Overrides:
read
in classorg.xnio.conduits.AbstractStreamSourceConduit<org.xnio.conduits.StreamSourceConduit>
- Throws:
IOException
-
isReadResumed
public boolean isReadResumed()- Specified by:
isReadResumed
in interfaceorg.xnio.conduits.SourceConduit
- Overrides:
isReadResumed
in classorg.xnio.conduits.AbstractSourceConduit<org.xnio.conduits.StreamSourceConduit>
-
wakeupReads
public void wakeupReads()- Specified by:
wakeupReads
in interfaceorg.xnio.conduits.SourceConduit
- Overrides:
wakeupReads
in classorg.xnio.conduits.AbstractSourceConduit<org.xnio.conduits.StreamSourceConduit>
-
resumeReads
public void resumeReads()- Specified by:
resumeReads
in interfaceorg.xnio.conduits.SourceConduit
- Overrides:
resumeReads
in classorg.xnio.conduits.AbstractSourceConduit<org.xnio.conduits.StreamSourceConduit>
-
terminateReads
- Specified by:
terminateReads
in interfaceorg.xnio.conduits.SourceConduit
- Overrides:
terminateReads
in classorg.xnio.conduits.AbstractSourceConduit<org.xnio.conduits.StreamSourceConduit>
- Throws:
IOException
-
awaitReadable
- Specified by:
awaitReadable
in interfaceorg.xnio.conduits.SourceConduit
- Overrides:
awaitReadable
in classorg.xnio.conduits.AbstractSourceConduit<org.xnio.conduits.StreamSourceConduit>
- Throws:
IOException
-
awaitReadable
- Specified by:
awaitReadable
in interfaceorg.xnio.conduits.SourceConduit
- Overrides:
awaitReadable
in classorg.xnio.conduits.AbstractSourceConduit<org.xnio.conduits.StreamSourceConduit>
- Throws:
IOException
-
getRemaining
public long getRemaining()Get the number of remaining bytes.- Returns:
- the number of remaining bytes
-