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 Summary
Nested ClassesModifier and TypeClassDescriptionstatic classAbstracts observer callback forObservableInputStreams. -
Constructor Summary
ConstructorsConstructorDescriptionObservableInputStream(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 Summary
Modifier and TypeMethodDescriptionvoidadd(ObservableInputStream.Observer observer) Adds an Observer.voidclose()Invokes the delegate'sclose()method.voidconsume()Reads all data from the underlyingInputStream, while notifying the observers.Gets a copy of currently registered observers.intread()Invokes the delegate'sread()method.intread(byte[] buffer) Invokes the delegate'sread(byte[])method.intread(byte[] buffer, int offset, int length) Invokes the delegate'sread(byte[], int, int)method.voidremove(ObservableInputStream.Observer observer) Removes an Observer.voidRemoves all Observers.Methods inherited from class org.apache.commons.io.input.ProxyInputStream
available, mark, markSupported, reset, skip, unwrapMethods inherited from class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
Constructor Details
-
ObservableInputStream
Constructs a new ObservableInputStream for the given InputStream.- Parameters:
inputStream- the input stream to observe.
-
ObservableInputStream
Constructs 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
-
add
Adds an Observer.- Parameters:
observer- the observer to add.
-
close
Description copied from class:ProxyInputStreamInvokes the delegate'sclose()method.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classProxyInputStream- Throws:
IOException- if an I/O error occurs.
-
consume
Reads all data from the underlyingInputStream, while notifying the observers.- Throws:
IOException- The underlyingInputStream, or either of the observers has thrown an exception.
-
getObservers
Gets a copy of currently registered observers.- Returns:
- a copy of the list of currently registered observers.
- Since:
- 2.9.0
-
read
Description copied from class:ProxyInputStreamInvokes the delegate'sread()method.- Overrides:
readin classProxyInputStream- Returns:
- the byte read or -1 if the end of stream
- Throws:
IOException- if an I/O error occurs.
-
read
Description copied from class:ProxyInputStreamInvokes the delegate'sread(byte[])method.- Overrides:
readin classProxyInputStream- Parameters:
buffer- the buffer to read the bytes into- Returns:
- the number of bytes read or EOF if the end of stream
- Throws:
IOException- if an I/O error occurs.
-
read
Description copied from class:ProxyInputStreamInvokes the delegate'sread(byte[], int, int)method.- Overrides:
readin classProxyInputStream- Parameters:
buffer- the buffer to read the bytes intooffset- The start offsetlength- The number of bytes to read- Returns:
- the number of bytes read or -1 if the end of stream
- Throws:
IOException- if an I/O error occurs.
-
remove
Removes an Observer.- Parameters:
observer- the observer to remove
-
removeAllObservers
public void removeAllObservers()Removes all Observers.
-