Interface Skippable

All Known Subinterfaces:
BidirectionalConnectionByteTransceiver<INPUT,OUTPUT>, BidirectionalStreamConnectionByteTransceiver, BytesReceiver, BytesTransceiver, ConnectionBytesReceiver<CON>, ConnectionBytesTransceiver<CON>, InputStreamConnectionByteReceiver
All Known Implementing Classes:
AbstractBytesReceiver, AbstractInputStreamByteReceiver, AbstractPrefetchInputStreamByteReceiver, BidirectionalStreamByteTransceiver, BidirectionalStreamConnectionByteTransceiverImpl, ByteArrayReceiver, BytesReceiverDecorator, InputStreamByteReceiver, InputStreamConnectionByteReceiverImpl, LoopbackBytesReceiver, LoopbackBytesTransceiver, PrefetchBidirectionalStreamByteTransceiver, PrefetchBidirectionalStreamConnectionByteTransceiver, PrefetchInputStreamByteReceiver, PrefetchInputStreamConnectionByteReceiver, SkipAvailableInputStream

public interface Skippable
The Skippable interface defines methods useful for omitting bytes known to be unusable for the according operation.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    Returns an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking, which may be 0, or 0 when end of stream is detected.
    long
    skip(long n)
    Skips over and discards n bytes of data from this input stream.
    default void
    Clears the read buffer from all available bytes as of available() at the time of this call.
    default void
    skipAvailableExcept(int aLength)
    Skips all currently available bytes except the number of bytes specified.
    default void
    skipAvailableTill(long aSkipTimeSpanInMs)
    Skips all available bytes till the given time span elapsed.
    default void
    skipAvailableTillSilenceFor(long aSilenceTimeSpanInMs)
    Skips all available bytes till a given time span of silence is detected: The number of bytes available must be 0 for the given time span for this operation to conclude.
    default void
    skipAvailableTillSilenceFor(long aSilenceTimeSpanInMs, long aTimeoutMillis)
    Skips all available bytes till a given time span of silence is detected: The number of bytes available must be 0 for the given time span for this operation to conclude.
    default void
    skipAvailableWithin(int aSkipLoops, int aSkipLoopTimeoutInMs)
    Skips all available bytes till after the given time no more bytes are available, else skipping is repeated till no more bytes are available within the given time span.
    default void
    skipAvailableWithin(long aSkipTimeSpanInMs)
    Skips all available bytes till after the given time no more bytes are available, else skipping is repeated till no more bytes are available within the given time span.This method blocks until the according available bytes have been skipped.
    default void
    skipAvailableWithin(long aSkipTimeSpanInMs, long aTimeoutMillis)
    Skips all available bytes till after the given time no more bytes are available, else skipping is repeated till no more bytes are available within the given time span.
  • Method Details

    • skipAvailable

      default void skipAvailable() throws IOException
      Clears the read buffer from all available bytes as of available() at the time of this call. The bytes available are determined at the beginning of the skip process to prevent ongoing skipping of bytes on very slow machines and whilst receiving at very fast transfer rates (hypothetical).
      Throws:
      IOException - thrown in case of I/O issues.
    • skipAvailableWithin

      default void skipAvailableWithin(long aSkipTimeSpanInMs) throws IOException
      Skips all available bytes till after the given time no more bytes are available, else skipping is repeated till no more bytes are available within the given time span.This method blocks until the according available bytes have been skipped. ATTENTION: To apply a custom timeout, please use skipAvailableWithin(long, long).
      Parameters:
      aSkipTimeSpanInMs - the skip time span in ms
      Throws:
      IOException - thrown in case of I/O issues.
    • skipAvailableWithin

      default void skipAvailableWithin(long aSkipTimeSpanInMs, long aTimeoutMillis) throws IOException
      Skips all available bytes till after the given time no more bytes are available, else skipping is repeated till no more bytes are available within the given time span.
      Parameters:
      aSkipTimeSpanInMs - the skip time span in ms
      aTimeoutMillis - the timeout in ms
      Throws:
      IOException - thrown in case of I/O issues.
    • skipAvailableWithin

      default void skipAvailableWithin(int aSkipLoops, int aSkipLoopTimeoutInMs) throws IOException
      Skips all available bytes till after the given time no more bytes are available, else skipping is repeated till no more bytes are available within the given time span.
      Parameters:
      aSkipLoops - the number of loops to skip available bytes.
      aSkipLoopTimeoutInMs - the timeout in ms for each loop to wait.
      Throws:
      IOException - thrown in case of I/O issues.
    • skipAvailableTill

      default void skipAvailableTill(long aSkipTimeSpanInMs) throws IOException
      Skips all available bytes till the given time span elapsed.
      Parameters:
      aSkipTimeSpanInMs - the skip time span in ms
      Throws:
      IOException - thrown in case of I/O issues.
    • skipAvailableTillSilenceFor

      default void skipAvailableTillSilenceFor(long aSilenceTimeSpanInMs) throws IOException
      Skips all available bytes till a given time span of silence is detected: The number of bytes available must be 0 for the given time span for this operation to conclude. This method blocks until the time span of silence has been reached. ATTENTION: To apply a custom timeout, please use skipAvailableTillSilenceFor(long, long).
      Parameters:
      aSilenceTimeSpanInMs - The time span in milliseconds of silence (0 bytes available) till skipping is terminated.
      Throws:
      IOException - thrown in case of I/O issues.
    • skipAvailableTillSilenceFor

      default void skipAvailableTillSilenceFor(long aSilenceTimeSpanInMs, long aTimeoutMillis) throws IOException
      Skips all available bytes till a given time span of silence is detected: The number of bytes available must be 0 for the given time span for this operation to conclude. In case the read timeout is not -1 and the overall time while skipping bytes exceeds the read timeout a TimeoutIOException is thrown.
      Parameters:
      aSilenceTimeSpanInMs - The time span in milliseconds of silence (0 bytes available) till skipping is terminated.
      aTimeoutMillis - The time in milliseconds before this operation is terminated in case no period of silence as been detected before. With a value of -1 timeout handling is disabled (blocking mode).
      Throws:
      IOException - thrown in case of I/O issues.
      org.refcodes.exception.TimeoutIOException - in case the the read timeout is not -1 and the overall time while skipping bytes exceeds the read timeout .
    • skipAvailableExcept

      default void skipAvailableExcept(int aLength) throws IOException
      Skips all currently available bytes except the number of bytes specified.
      Parameters:
      aLength - The number of bytes to leave in the InputStream.
      Throws:
      IOException - thrown in case of problems while skipping.
    • skip

      long skip(long n) throws IOException
      Skips over and discards n bytes of data from this input stream. 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, the skip method for class InputStream always returns 0, and no bytes are skipped. Subclasses may handle the negative value differently. The skip method implementation 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.
      Parameters:
      n - the number of bytes to be skipped.
      Returns:
      the actual number of bytes skipped which might be zero.
      Throws:
      IOException - if an I/O error occurs.
    • available

      int available() throws IOException
      Returns an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking, which may be 0, or 0 when end of stream is detected. The read might be on the same thread or another thread. A single read or skip of this many bytes will not block, but may read or skip fewer bytes. Note that while some implementations as of the InputStream will return the total number of bytes in the stream, many will not. It is never correct to use the return value of this method to allocate a buffer intended to hold all data in this stream. A subclass's implementation of this method may choose to throw an IOException if this input stream has been closed. The available method of InputStream always returns 0.
      Returns:
      an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking or 0 when it reaches the end of the input stream.
      Throws:
      IOException - if an I/O error occurs.