Linux Mac OSX Windows

Implemented by

 nsIInputStreamPump

 This interface provides a means to configure and use a input stream pump
 instance.  The input stream pump will asynchronously read from a input
 stream, and push data to a nsIStreamListener instance.  It utilizes the 
 current thread's nsIEventTarget in order to make reading from the stream
 asynchronous.

 If the given stream supports nsIAsyncInputStream, then the stream pump will
 call the stream's AsyncWait method to drive the stream listener.  Otherwise,
 the stream will be read on a background thread utilizing the stream
 transport service.  More details are provided below.
[scriptable, uuid(400f5468-97e7-4d2b-9c65-a82aecc7ae82)]
interface nsIInputStreamPump : nsIRequest

Methods

 asyncRead causes the input stream to be read in chunks and delivered
 asynchronously to the listener via OnDataAvailable.

 @param aListener
        receives notifications.
 @param aListenerContext
        passed to listener methods.
void asyncRead(in nsIStreamListener aListener, in nsISupports aListenerContext)
 Initialize the input stream pump.

 @param aStream
        contains the data to be read.  if the input stream is non-blocking,
        then it will be QI'd to nsIAsyncInputStream.  if the QI succeeds
        then the stream will be read directly.  otherwise, it will be read
        on a background thread using the stream transport service.
 @param aStreamPos
        specifies the stream offset from which to start reading.  the
        offset value is absolute.  pass -1 to specify the current offset.
        NOTE: this parameter is ignored if the underlying stream does not
        implement nsISeekableStream.
 @param aStreamLen
        specifies how much data to read from the stream.  pass -1 to read
        all data available in the stream.
 @param aSegmentSize
        if the stream transport service is used, then this parameter
        specifies the segment size for the stream transport's buffer.
        pass 0 to specify the default value.
 @param aSegmentCount
        if the stream transport service is used, then this parameter
        specifies the segment count for the stream transport's buffer.
        pass 0 to specify the default value.
 @param aCloseWhenDone
        if true, the input stream will be closed after it has been read.
void init(in nsIInputStream aStream, in long long aStreamPos, in long long aStreamLen, in unsigned long aSegmentSize, in unsigned long aSegmentCount, in boolean aCloseWhenDone)