net.sf.asyncobjects.io.util
Class ExhaustingInput<D extends BatchedData<D>,I extends AInput<D>>
java.lang.Object
net.sf.asyncobjects.AsyncUnicastServer<FacetType>
net.sf.asyncobjects.util.CloseableWrapper<I,I>
net.sf.asyncobjects.io.util.ExhaustingInput<D,I>
- Type Parameters:
D
- a batched data typeI
- an input type
- All Implemented Interfaces:
- ACloseable, AsyncObject, ExplicitSharing, AInput<D>
- Direct Known Subclasses:
- ExhaustingByteInput, ExhaustingTextInput
public class ExhaustingInput<D extends BatchedData<D>,I extends AInput<D>>
- extends CloseableWrapper<I,I>
- implements AInput<D>
This input waits until stream is fully readed. The stream is fully reads
out the stream on the close. This class is required for some protocol
implementations.
Note that the exhausted()
promise is resolved the first time EOF is
reached. Because AInput.pushback(net.sf.asyncobjects.io.BatchedData)
methods could reverse this condition, the class handles pushbacks itself.
- Author:
- const
Constructor Summary |
ExhaustingInput(D empty,
I stream,
boolean closeStream)
A construcor |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ExhaustingInput
public ExhaustingInput(D empty,
I stream,
boolean closeStream)
- A construcor
- Parameters:
empty
- a empty datastream
- a streamcloseStream
- if true stream is closed
exhausted
public Promise<Void> exhausted()
- Returns:
- a promise for the exhaused indicator. It resolves when failure
encountered or when stream is completely read.
read
public Promise<D> read(int limit)
- Read data
- Specified by:
read
in interface AInput<D extends BatchedData<D>>
- Parameters:
limit
- a limit for data to read
- Returns:
- a promise for read data
- See Also:
AInput.read(int)
beforeClose
protected Promise<Void> beforeClose()
- Description copied from class:
CloseableWrapper
- Handle close operation
- Overrides:
beforeClose
in class CloseableWrapper<I extends AInput<D>,I extends AInput<D>>
- Returns:
- a promise that resolves when handling close is finished
- See Also:
CloseableWrapper.beforeClose()
afterInvalidate
protected void afterInvalidate(Throwable problem)
- Description copied from class:
CloseableWrapper
- Perform additional invalidation for the stream. Override this method to
perform additional invalidation. If the method throws an exception, it is
logged and ignored.
- Overrides:
afterInvalidate
in class CloseableWrapper<I extends AInput<D>,I extends AInput<D>>
- Parameters:
problem
- a problem.- See Also:
CloseableWrapper.afterInvalidate(java.lang.Throwable)
isPushbackSupported
public Promise<Boolean> isPushbackSupported()
- Specified by:
isPushbackSupported
in interface AInput<D extends BatchedData<D>>
- Returns:
- true if pushback supported for this stream
- See Also:
AInput.isPushbackSupported()
pushback
public Promise<Void> pushback(D data)
- Pushback
- Specified by:
pushback
in interface AInput<D extends BatchedData<D>>
- Parameters:
data
- a data to push back
- Returns:
- when pushback finishes
- See Also:
AInput.pushback(net.sf.asyncobjects.io.BatchedData)
Copyright © 2002-2007 Constantine Plotnikov. All Rights Reserved.