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
  • 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 from
      contentLength - the amount of content to read
      finishListener - the listener to call once the stream is exhausted or closed
      exchange - 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 from
      contentLength - the amount of content to read
      finishListener - the listener to call once the stream is exhausted or closed
  • Method Details

    • transferTo

      public long transferTo(long position, long count, FileChannel target) throws IOException
      Specified by:
      transferTo in interface org.xnio.conduits.StreamSourceConduit
      Overrides:
      transferTo in class org.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 interface org.xnio.conduits.StreamSourceConduit
      Overrides:
      transferTo in class org.xnio.conduits.AbstractStreamSourceConduit<org.xnio.conduits.StreamSourceConduit>
      Throws:
      IOException
    • read

      public long read(ByteBuffer[] dsts, int offset, int length) throws IOException
      Specified by:
      read in interface org.xnio.conduits.StreamSourceConduit
      Overrides:
      read in class org.xnio.conduits.AbstractStreamSourceConduit<org.xnio.conduits.StreamSourceConduit>
      Throws:
      IOException
    • read

      public long read(ByteBuffer[] dsts) throws IOException
      Throws:
      IOException
    • read

      public int read(ByteBuffer dst) throws IOException
      Specified by:
      read in interface org.xnio.conduits.StreamSourceConduit
      Overrides:
      read in class org.xnio.conduits.AbstractStreamSourceConduit<org.xnio.conduits.StreamSourceConduit>
      Throws:
      IOException
    • isReadResumed

      public boolean isReadResumed()
      Specified by:
      isReadResumed in interface org.xnio.conduits.SourceConduit
      Overrides:
      isReadResumed in class org.xnio.conduits.AbstractSourceConduit<org.xnio.conduits.StreamSourceConduit>
    • wakeupReads

      public void wakeupReads()
      Specified by:
      wakeupReads in interface org.xnio.conduits.SourceConduit
      Overrides:
      wakeupReads in class org.xnio.conduits.AbstractSourceConduit<org.xnio.conduits.StreamSourceConduit>
    • resumeReads

      public void resumeReads()
      Specified by:
      resumeReads in interface org.xnio.conduits.SourceConduit
      Overrides:
      resumeReads in class org.xnio.conduits.AbstractSourceConduit<org.xnio.conduits.StreamSourceConduit>
    • terminateReads

      public void terminateReads() throws IOException
      Specified by:
      terminateReads in interface org.xnio.conduits.SourceConduit
      Overrides:
      terminateReads in class org.xnio.conduits.AbstractSourceConduit<org.xnio.conduits.StreamSourceConduit>
      Throws:
      IOException
    • awaitReadable

      public void awaitReadable() throws IOException
      Specified by:
      awaitReadable in interface org.xnio.conduits.SourceConduit
      Overrides:
      awaitReadable in class org.xnio.conduits.AbstractSourceConduit<org.xnio.conduits.StreamSourceConduit>
      Throws:
      IOException
    • awaitReadable

      public void awaitReadable(long time, TimeUnit timeUnit) throws IOException
      Specified by:
      awaitReadable in interface org.xnio.conduits.SourceConduit
      Overrides:
      awaitReadable in class org.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