Class SSLStreamedInput
- All Implemented Interfaces:
Closeable,AutoCloseable
public class SSLStreamedInput extends SSLInputStream
-
Constructor Summary
Constructors Constructor Description SSLStreamedInput(InputStream in) -
Method Summary
Methods inherited from class org.conscrypt.SSLInputStream
read, read, readUint16, readUint24, readUint32, readUint64, readUint8Methods inherited from class java.io.InputStream
close, mark, markSupported, read, reset, skip
-
Constructor Details
-
SSLStreamedInput
-
-
Method Details
-
available
Description copied from class:InputStreamReturns an estimated number of bytes that can be read or skipped without blocking for more input.Note that this method provides such a weak guarantee that it is not very useful in practice.
Firstly, the guarantee is "without blocking for more input" rather than "without blocking": a read may still block waiting for I/O to complete — the guarantee is merely that it won't have to wait indefinitely for data to be written. The result of this method should not be used as a license to do I/O on a thread that shouldn't be blocked.
Secondly, the result is a conservative estimate and may be significantly smaller than the actual number of bytes available. In particular, an implementation that always returns 0 would be correct. In general, callers should only use this method if they'd be satisfied with treating the result as a boolean yes or no answer to the question "is there definitely data ready?".
Thirdly, the fact that a given number of bytes is "available" does not guarantee that a read or skip will actually read or skip that many bytes: they may read or skip fewer.
It is particularly important to realize that you must not use this method to size a container and assume that you can read the entirety of the stream without needing to resize the container. Such callers should probably write everything they read to a
ByteArrayOutputStreamand convert that to a byte array. Alternatively, if you're reading from a file,File.length()returns the current length of the file (though assuming the file's length can't change may be incorrect, reading a file is inherently racy).The default implementation of this method in
InputStreamalways returns 0. Subclasses should override this method if they are able to indicate the number of bytes available.- Specified by:
availablein classSSLInputStream- Returns:
- the estimated number of bytes available
- Throws:
IOException- if this stream is closed or an error occurs
-
read
Read an opaque value from the stream.- Specified by:
readin classSSLInputStream- Returns:
- the value read from the underlying stream.
- Throws:
IOException- if the data could not be read from the underlying streamEndOfSourceException- if the end of the underlying stream has been reached.- See Also:
read(),SSLBufferedInput.read(),HandshakeIODataStream.read()
-