public class SdkDigestInputStream extends DigestInputStream implements MetricAware, Releasable
DigestInputStream
.Constructor and Description |
---|
SdkDigestInputStream(InputStream stream,
MessageDigest digest) |
Modifier and Type | Method and Description |
---|---|
boolean |
isMetricActivated()
Returns true if this object or one of it's inner wrapped objects has
metrics gathering activity turned on; false otherwise.
|
void |
release()
Releases the allocated resource.
|
long |
skip(long n)
Skips over and discards
n bytes of data from this input
stream, while taking the skipped bytes into account for digest
calculation. |
getMessageDigest, on, read, read, setMessageDigest, toString
available, close, mark, markSupported, read, reset
public SdkDigestInputStream(InputStream stream, MessageDigest digest)
public final boolean isMetricActivated()
MetricAware
isMetricActivated
in interface MetricAware
public final long skip(long n) throws IOException
n
bytes of data from this input
stream, while taking the skipped bytes into account for digest
calculation. The skip
method may, for a variety of reasons,
end up skipping over some smaller number of bytes, possibly
0
. This may result from any of a number of conditions;
reaching end of file before n
bytes have been skipped is
only one possibility. The actual number of bytes skipped is returned. If
n
is negative, no bytes are skipped.
The skip
method of this class creates a byte array and then
repeatedly reads into it until n
bytes have been read or the
end of the stream has been reached. Subclasses are encouraged to provide
a more efficient implementation of this method. For instance, the
implementation may depend on the ability to seek.
skip
in class FilterInputStream
n
- the number of bytes to be skipped.IOException
- if the stream does not support seek, or if some other I/O
error occurs.public final void release()
Releasable
Closeable
resource to be not
unintentionally released owing to the calling of the
Closeable.close()
methods by implementation deep down in the call
stack.
For example, the creation of a ResettableInputStream
would entail
physically opening a file. If the opened file is meant to be closed only
(in a finally block) by the very same code block that created it, then it
is necessary that the release method must not be called while the
execution is made in other stack frames.
In such case, as other stack frames may inadvertently or indirectly call
the close method of the stream, the creator of the stream would need to
explicitly disable the accidental closing via
ResettableInputStream#disableClose()
, so that the release method
becomes the only way to truly close the opened file.
release
in interface Releasable