org.jboss.netty.handler.stream

## Class ChunkedStream

- java.lang.Object
- - org.jboss.netty.handler.stream.ChunkedStream

- All Implemented Interfaces:
    ChunkedInput

      public class ChunkedStream
      extends Object
      implements ChunkedInput

  A `ChunkedInput` that fetches data from an `InputStream` chunk by chunk.

  Please note that the `InputStream` instance that feeds data into `ChunkedStream` must implement `InputStream.available()` as accurately as possible, rather than using the default implementation. Otherwise, `ChunkedStream` will generate many too small chunks or block unnecessarily often.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ChunkedStream(InputStream in)` Creates a new instance that fetches data from the specified stream.
    `ChunkedStream(InputStream in, int chunkSize)` Creates a new instance that fetches data from the specified stream.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Releases the resources associated with the stream.
    `long` | `getTransferredBytes()` Returns the number of transferred bytes.
    `boolean` | `hasNextChunk()` Returns `true` if and only if there is any data left in the stream.
    `boolean` | `isEndOfInput()` Return `true` if and only if there is no data left in the stream and the stream has reached at its end.
    `Object` | `nextChunk()` Fetches a chunked data from the stream.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ChunkedStream

          public ChunkedStream(InputStream in)

      Creates a new instance that fetches data from the specified stream.

    - #### ChunkedStream

          public ChunkedStream(InputStream in,
                       int chunkSize)

      Creates a new instance that fetches data from the specified stream.
      Parameters:
        `chunkSize` - the number of bytes to fetch on each `nextChunk()` call

  - ### Method Detail

    - #### getTransferredBytes

          public long getTransferredBytes()

      Returns the number of transferred bytes.

    - #### hasNextChunk

          public boolean hasNextChunk()
                               throws Exception

      Description copied from interface: `ChunkedInput`
      Returns `true` if and only if there is any data left in the stream. Please note that `false` does not necessarily mean that the stream has reached at its end. In a slow stream, the next chunk might be unavailable just momentarily.
      Specified by:
        `hasNextChunk` in interface `ChunkedInput`
      Throws:
        `Exception`

    - #### isEndOfInput

          public boolean isEndOfInput()
                               throws Exception

      Description copied from interface: `ChunkedInput`
      Return `true` if and only if there is no data left in the stream and the stream has reached at its end.
      Specified by:
        `isEndOfInput` in interface `ChunkedInput`
      Throws:
        `Exception`

    - #### close

          public void close()
                     throws Exception

      Description copied from interface: `ChunkedInput`
      Releases the resources associated with the stream.
      Specified by:
        `close` in interface `ChunkedInput`
      Throws:
        `Exception`

    - #### nextChunk

          public Object nextChunk()
                           throws Exception

      Description copied from interface: `ChunkedInput`
      Fetches a chunked data from the stream. The returned chunk is usually a `ChannelBuffer`, but you could extend an existing implementation to convert the `ChannelBuffer` into a different type that your handler or encoder understands. Once this method returns the last chunk and thus the stream has reached at its end, any subsequent `ChunkedInput.isEndOfInput()` call must return `false`.
      Specified by:
        `nextChunk` in interface `ChunkedInput`
      Returns:
        the fetched chunk, which is usually `ChannelBuffer`. `null` if there is no data left in the stream. Please note that `null` does not necessarily mean that the stream has reached at its end. In a slow stream, the next chunk might be unavailable just momentarily.
      Throws:
        `Exception`

Copyright © 2008-2012 The Netty Project. All Rights Reserved.