Class CyclicTimeout
- java.lang.Object
 - 
- org.eclipse.jetty.io.CyclicTimeout
 
 
- 
- All Implemented Interfaces:
 Destroyable
- Direct Known Subclasses:
 TimeoutCompleteListener
@Deprecated(since="2021-05-27") public abstract class CyclicTimeout extends java.lang.Object implements Destroyable
Deprecated.The Eclipse Jetty and Apache Felix Http Jetty packages are no longer supported.An abstract implementation of a timeout.
Subclasses should implement
onTimeoutExpired().This implementation is optimised assuming that the timeout will mostly be cancelled and then reused with a similar value.
The typical scenario to use this class is when you have events that postpone (by re-scheduling), or cancel then re-schedule, a timeout for a single entity. For example: connection idleness, where for each connection there is a CyclicTimeout and a read/write postpones the timeout; when the timeout expires, the implementation checks against a timestamp if the connection is really idle. Another example: HTTP session expiration, where for each HTTP session there is a CyclicTimeout and at the beginning of the request processing the timeout is canceled (via cancel()), but at the end of the request processing the timeout is re-scheduled.
This implementation has a
CyclicTimeout.Timeoutholding the time at which the scheduled task should fire, and a linked list ofCyclicTimeout.Wakeup, each holding the actual scheduled task.Calling
schedule(long, TimeUnit)the first time will create a Timeout with an associated Wakeup and submit a task to the scheduler. Callingschedule(long, TimeUnit)again with the same or a larger delay will cancel the previous Timeout, but keep the previous Wakeup without submitting a new task to the scheduler, therefore reducing the pressure on the scheduler and avoid it becomes a bottleneck. When the Wakeup task fires, it will see that the Timeout is now in the future and will attach a new Wakeup with the future time to the Timeout, and submit a scheduler task for the new Wakeup.- See Also:
 CyclicTimeouts
 
- 
- 
Constructor Summary
Constructors Constructor Description CyclicTimeout(Scheduler scheduler)Deprecated. 
- 
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description booleancancel()Deprecated.Cancels this CyclicTimeout so that it won't expire.voiddestroy()Deprecated.Destroys this CyclicTimeout.SchedulergetScheduler()Deprecated.abstract voidonTimeoutExpired()Deprecated.Invoked when the timeout expires.booleanschedule(long delay, java.util.concurrent.TimeUnit units)Deprecated.Schedules a timeout, even if already set, cancelled or expired. 
 - 
 
- 
- 
Constructor Detail
- 
CyclicTimeout
public CyclicTimeout(Scheduler scheduler)
Deprecated.- Parameters:
 scheduler- A scheduler used to schedule wakeups
 
 - 
 
- 
Method Detail
- 
getScheduler
public Scheduler getScheduler()
Deprecated. 
- 
schedule
public boolean schedule(long delay, java.util.concurrent.TimeUnit units)Deprecated.Schedules a timeout, even if already set, cancelled or expired.
If a timeout is already set, it will be cancelled and replaced by the new one.
- Parameters:
 delay- The period of time before the timeout expires.units- The unit of time of the period.- Returns:
 - true if the timeout was already set.
 
 
- 
cancel
public boolean cancel()
Deprecated.Cancels this CyclicTimeout so that it won't expire.
After being cancelled, this CyclicTimeout can be scheduled again.
- Returns:
 - true if this CyclicTimeout was scheduled to expire
 - See Also:
 destroy()
 
- 
onTimeoutExpired
public abstract void onTimeoutExpired()
Deprecated.Invoked when the timeout expires.
 
- 
destroy
public void destroy()
Deprecated.Destroys this CyclicTimeout.
After being destroyed, this CyclicTimeout is not used anymore.
- Specified by:
 destroyin interfaceDestroyable
 
 - 
 
 -