Package okio

Class AsyncTimeout


  • public class AsyncTimeout
    extends Timeout
    This timeout uses a background thread to take action exactly when the timeout occurs. Use this to implement timeouts where they aren't supported natively, such as to sockets that are blocked on writing.

    Subclasses should override timedOut() to take action when a timeout occurs. This method will be invoked by the shared watchdog thread so it should not do any long-running operations. Otherwise we risk starving other timeouts from being triggered.

    Use sink(okio.Sink) and source(okio.Source) to apply this timeout to a stream. The returned value will apply the timeout to each operation on the wrapped stream.

    Callers should call enter() before doing work that is subject to timeouts, and exit() afterwards. The return value of exit() indicates whether a timeout was triggered. Note that the call to timedOut() is asynchronous, and may be called after exit().

    • Constructor Detail

      • AsyncTimeout

        public AsyncTimeout()
    • Method Detail

      • enter

        public final void enter()
      • exit

        public final boolean exit()
        Returns true if the timeout occurred.
      • timedOut

        protected void timedOut()
        Invoked by the watchdog thread when the time between calls to enter() and exit() has exceeded the timeout.
      • sink

        public final Sink sink​(Sink sink)
        Returns a new sink that delegates to sink, using this to implement timeouts. This works best if timedOut() is overridden to interrupt sink's current operation.
      • source

        public final Source source​(Source source)
        Returns a new source that delegates to source, using this to implement timeouts. This works best if timedOut() is overridden to interrupt sink's current operation.
      • newTimeoutException

        protected java.io.IOException newTimeoutException​(@Nullable
                                                          java.io.IOException cause)
        Returns an IOException to represent a timeout. By default this method returns InterruptedIOException. If cause is non-null it is set as the cause of the returned exception.