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
public class ObservableInputStream extends ProxyInputStream
TheObservableInputStreamallows, that an InputStream may be consumed by other receivers, apart from the thread, which is reading it. The other consumers are implemented as instances ofObservableInputStream.Observer. A typical application may be the generation of aMessageDigeston the fly.Note: TheObservableInputStreamis 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:
MessageDigestCalculatingInputStream
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classObservableInputStream.ObserverAbstracts observer callback forObservableInputStreams.
-
Constructor Summary
Constructors Constructor Description ObservableInputStream(InputStream pProxy)Creates a new ObservableInputStream for the given InputStream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(ObservableInputStream.Observer pObserver)Adds an Observer.voidclose()Invokes the delegate'sclose()method.voidconsume()Reads all data from the underlyingInputStream, while notifying the observers.intread()Invokes the delegate'sread()method.intread(byte[] pBuffer)Invokes the delegate'sread(byte[])method.intread(byte[] pBuffer, int pOffset, int pLength)Invokes the delegate'sread(byte[], int, int)method.voidremove(ObservableInputStream.Observer pObserver)Removes an Observer.voidremoveAllObservers()Removes all Observers.-
Methods inherited from class org.apache.commons.io.input.ProxyInputStream
available, mark, markSupported, reset, skip
-
Methods inherited from class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
-
-
-
-
Constructor Detail
-
ObservableInputStream
public ObservableInputStream(InputStream pProxy)
Creates a new ObservableInputStream for the given InputStream.- Parameters:
pProxy- the input stream to proxy
-
-
Method Detail
-
add
public void add(ObservableInputStream.Observer pObserver)
Adds an Observer.- Parameters:
pObserver- the observer to add
-
remove
public void remove(ObservableInputStream.Observer pObserver)
Removes an Observer.- Parameters:
pObserver- the observer to remove
-
removeAllObservers
public void removeAllObservers()
Removes all Observers.
-
read
public int read() throws IOExceptionDescription 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
public int read(byte[] pBuffer) throws IOExceptionDescription copied from class:ProxyInputStreamInvokes the delegate'sread(byte[])method.- Overrides:
readin classProxyInputStream- Parameters:
pBuffer- 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
public int read(byte[] pBuffer, int pOffset, int pLength) throws IOExceptionDescription copied from class:ProxyInputStreamInvokes the delegate'sread(byte[], int, int)method.- Overrides:
readin classProxyInputStream- Parameters:
pBuffer- the buffer to read the bytes intopOffset- The start offsetpLength- 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
-
close
public void close() throws IOExceptionDescription 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
public void consume() throws IOExceptionReads all data from the underlyingInputStream, while notifying the observers.- Throws:
IOException- The underlyingInputStream, or either of the observers has thrown an exception.
-
-