nsIInputStreamPump
This interface provides a means to configure and use a input stream pump
instance. The input stream pump will asynchronously read from an input
stream, and push data to an nsIStreamListener instance. It utilizes the
current thread’s nsIEventTarget in order to make reading from the stream
asynchronous. A different thread can be used if the pump also implements
nsIThreadRetargetableRequest.
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.
Initialize the input stream pump.
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. |
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. |
aStreamLen | specifies how much data to read from the stream. pass -1 to read all data available in the stream. |
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. |
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. |
aCloseWhenDone | if true, the input stream will be closed after it has been read. |
asyncRead causes the input stream to be read in chunks and delivered
asynchronously to the listener via OnDataAvailable.
aListener | receives notifications. |
aListenerContext | passed to listener methods. |