Package okio
Class AsyncTimeout
java.lang.Object
okio.Timeout
okio.AsyncTimeout
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()
.
-
Field Summary
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal void
enter()
final boolean
exit()
Returns true if the timeout occurred.protected IOException
newTimeoutException
(IOException cause) Returns anIOException
to represent a timeout.final Sink
Returns a new sink that delegates tosink
, using this to implement timeouts.final Source
Returns a new source that delegates tosource
, using this to implement timeouts.protected void
timedOut()
Methods inherited from class okio.Timeout
clearDeadline, clearTimeout, deadline, deadlineNanoTime, deadlineNanoTime, hasDeadline, throwIfReached, timeout, timeoutNanos, waitUntilNotified
-
Constructor Details
-
AsyncTimeout
public AsyncTimeout()
-
-
Method Details
-
enter
public final void enter() -
exit
public final boolean exit()Returns true if the timeout occurred. -
timedOut
protected void timedOut() -
sink
Returns a new sink that delegates tosink
, using this to implement timeouts. This works best iftimedOut()
is overridden to interruptsink
's current operation. -
source
Returns a new source that delegates tosource
, using this to implement timeouts. This works best iftimedOut()
is overridden to interruptsink
's current operation. -
newTimeoutException
Returns anIOException
to represent a timeout. By default this method returnsInterruptedIOException
. Ifcause
is non-null it is set as the cause of the returned exception.
-