Package org.apache.commons.io.input
Class ObservableInputStream
java.lang.Object
java.io.InputStream
java.io.FilterInputStream
org.apache.commons.io.input.ProxyInputStream
org.apache.commons.io.input.ObservableInputStream
- All Implemented Interfaces:
- Closeable,- AutoCloseable
- Direct Known Subclasses:
- MessageDigestCalculatingInputStream,- MessageDigestInputStream
The 
ObservableInputStream allows, that an InputStream may be consumed by other receivers, apart from the
 thread, which is reading it. The other consumers are implemented as instances of ObservableInputStream.Observer.
 
 A typical application may be the generation of a MessageDigest on the fly.
 
 Note: The ObservableInputStream is not thread safe, as instances of InputStream usually
 aren't. If you must access the stream from multiple threads, then synchronization, locking, or a similar means must
 be used.
 
- See Also:
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionstatic classFor subclassing builders fromBoundedInputStreamsubclassses.static classBuilds instances ofObservableInputStream.static classAbstracts observer callback forObservableInputStreams.
- 
Field SummaryFields inherited from class java.io.FilterInputStreamin
- 
Constructor SummaryConstructorsConstructorDescriptionObservableInputStream(InputStream inputStream) Constructs a new ObservableInputStream for the given InputStream.ObservableInputStream(InputStream inputStream, ObservableInputStream.Observer... observers) Constructs a new ObservableInputStream for the given InputStream.
- 
Method SummaryModifier and TypeMethodDescriptionvoidadd(ObservableInputStream.Observer observer) Adds an Observer.voidclose()Invokes the delegate'sInputStream.close()method.voidconsume()Reads all data from the underlyingInputStream, while notifying the observers.Gets a copy of currently registered observers.protected voidNotifies the observers by invokingObservableInputStream.Observer.finished().protected voidnoteDataByte(int value) Notifies the observers by invokingObservableInputStream.Observer.data(int)with the given arguments.protected voidnoteDataBytes(byte[] buffer, int offset, int length) Notifies the observers by invokingObservableInputStream.Observer.data(byte[],int,int)with the given arguments.protected voidnoteError(IOException exception) Notifies the observers by invokingObservableInputStream.Observer.error(IOException)with the given argument.protected voidNotifies the observers by invokingObservableInputStream.Observer.finished().intread()Invokes the delegate'sInputStream.read()method unless the stream is closed.intread(byte[] buffer) Invokes the delegate'sInputStream.read(byte[])method.intread(byte[] buffer, int offset, int length) Invokes the delegate'sInputStream.read(byte[], int, int)method.voidremove(ObservableInputStream.Observer observer) Removes an Observer.voidRemoves all Observers.Methods inherited from class org.apache.commons.io.input.ProxyInputStreamafterRead, available, beforeRead, handleIOException, mark, markSupported, reset, setReference, skip, unwrap
- 
Constructor Details- 
ObservableInputStreamConstructs a new ObservableInputStream for the given InputStream.- Parameters:
- inputStream- the input stream to observe.
 
- 
ObservableInputStreamConstructs a new ObservableInputStream for the given InputStream.- Parameters:
- inputStream- the input stream to observe.
- observers- List of observer callbacks.
- Since:
- 2.9.0
 
 
- 
- 
Method Details- 
addAdds an Observer.- Parameters:
- observer- the observer to add.
 
- 
closeDescription copied from class:ProxyInputStreamInvokes the delegate'sInputStream.close()method.- Specified by:
- closein interface- AutoCloseable
- Specified by:
- closein interface- Closeable
- Overrides:
- closein class- ProxyInputStream
- Throws:
- IOException- if an I/O error occurs.
 
- 
consumeReads all data from the underlyingInputStream, while notifying the observers.- Throws:
- IOException- The underlying- InputStream, or either of the observers has thrown an exception.
 
- 
getObserversGets a copy of currently registered observers.- Returns:
- a copy of the list of currently registered observers.
- Since:
- 2.9.0
 
- 
noteClosedNotifies the observers by invokingObservableInputStream.Observer.finished().- Throws:
- IOException- Some observer has thrown an exception, which is being passed down.
 
- 
noteDataByteNotifies the observers by invokingObservableInputStream.Observer.data(int)with the given arguments.- Parameters:
- value- Passed to the observers.
- Throws:
- IOException- Some observer has thrown an exception, which is being passed down.
 
- 
noteDataBytesNotifies the observers by invokingObservableInputStream.Observer.data(byte[],int,int)with the given arguments.- Parameters:
- buffer- Passed to the observers.
- offset- Passed to the observers.
- length- Passed to the observers.
- Throws:
- IOException- Some observer has thrown an exception, which is being passed down.
 
- 
noteErrorNotifies the observers by invokingObservableInputStream.Observer.error(IOException)with the given argument.- Parameters:
- exception- Passed to the observers.
- Throws:
- IOException- Some observer has thrown an exception, which is being passed down. This may be the same exception, which has been passed as an argument.
 
- 
noteFinishedNotifies the observers by invokingObservableInputStream.Observer.finished().- Throws:
- IOException- Some observer has thrown an exception, which is being passed down.
 
- 
readDescription copied from class:ProxyInputStreamInvokes the delegate'sInputStream.read()method unless the stream is closed.- Overrides:
- readin class- ProxyInputStream
- Returns:
- the byte read or EOFif we reached the end of stream.
- Throws:
- IOException- if an I/O error occurs.
 
- 
readDescription copied from class:ProxyInputStreamInvokes the delegate'sInputStream.read(byte[])method.- Overrides:
- readin class- ProxyInputStream
- Parameters:
- buffer- the buffer to read the bytes into.
- Returns:
- the number of bytes read or EOFif we reached the end of stream.
- Throws:
- IOException-- If the first byte cannot be read for any reason other than the end of the file,
- if the input stream has been closed, or
- if some other I/O error occurs.
 
 
- 
readDescription copied from class:ProxyInputStreamInvokes the delegate'sInputStream.read(byte[], int, int)method.- Overrides:
- readin class- ProxyInputStream
- Parameters:
- buffer- the buffer to read the bytes into.
- offset- The start offset.
- length- The number of bytes to read.
- Returns:
- the number of bytes read or EOFif we reached the end of stream.
- Throws:
- IOException-- If the first byte cannot be read for any reason other than the end of the file,
- if the input stream has been closed, or
- if some other I/O error occurs.
 
 
- 
removeRemoves an Observer.- Parameters:
- observer- the observer to remove
 
- 
removeAllObserversRemoves all Observers.
 
-