Package org.forgerock.opendj.ldap
Class TimeoutScheduler
- java.lang.Object
-
- org.forgerock.opendj.ldap.TimeoutScheduler
-
- All Implemented Interfaces:
Closeable,AutoCloseable
public final class TimeoutScheduler extends Object implements Closeable
InvokesTimeoutScheduler.TimeoutEventListenerat a regular interval.All tasks registered with the
scheduleAtFixedRate(TimeoutEventListener)method are called back withTimeoutScheduler.TimeoutEventListener.checkForTimeout(long).Internally, this class schedules a single "root" task for all the registered
TimeoutScheduler.TimeoutEventListeners which is automatically started at the first registeredTimeoutScheduler.TimeoutEventListenerand stopped once allTimeoutScheduler.TimeoutEventListeners has been de-registered.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceTimeoutScheduler.TimeoutEventListenerListener on timeout events.
-
Constructor Summary
Constructors Constructor Description TimeoutScheduler(com.forgerock.opendj.util.ReferenceCountedObject.Reference<ScheduledExecutorService> scheduler, Duration period)Creates a newTimeoutScheduler.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()longgetPeriodMillis()Returns the period in milliseconds between successive task invocations.longnow()Returns the current time in milliseconds from theClockof thisTimeoutScheduler.booleanremoveScheduledTask(TimeoutScheduler.TimeoutEventListener task)De-registers a task for periodic invocation.voidscheduleAtFixedRate(TimeoutScheduler.TimeoutEventListener task)Schedules the task for periodic invocation.inttaskCount()Returns the number ofTimeoutScheduler.TimeoutEventListenerregistered.
-
-
-
Constructor Detail
-
TimeoutScheduler
public TimeoutScheduler(com.forgerock.opendj.util.ReferenceCountedObject.Reference<ScheduledExecutorService> scheduler, Duration period)
Creates a newTimeoutScheduler.- Parameters:
scheduler- The scheduler that will be used for periodically checking for timeouts.period- The period between successive executions. A period of 0 will never invoke the scheduled tasks, regardless of the underlying time unit.
-
-
Method Detail
-
scheduleAtFixedRate
public void scheduleAtFixedRate(TimeoutScheduler.TimeoutEventListener task)
Schedules the task for periodic invocation.Note that there is no delay guaranteed for the first invocation: the first invocation can be invoked immediately or at most twice the period. Subsequent invocations should happen at the specified
period.- Parameters:
task- The task to register for periodic invocation.- Throws:
IllegalStateException- If this scheduler is closed.NullPointerException- Iftaskis null.
-
removeScheduledTask
public boolean removeScheduledTask(TimeoutScheduler.TimeoutEventListener task)
De-registers a task for periodic invocation.Note that the task might be invoked a last time after this method returns.
- Parameters:
task- The task to de-register.- Returns:
trueif the task was de-registered,falseis the task was not registered.- Throws:
NullPointerException- Iftaskis null.
-
getPeriodMillis
public long getPeriodMillis()
Returns the period in milliseconds between successive task invocations.- Returns:
- The period in milliseconds or
0if tasks are never invoked.
-
now
public long now()
Returns the current time in milliseconds from theClockof thisTimeoutScheduler.- Returns:
- The current time in milliseconds.
-
taskCount
public int taskCount()
Returns the number ofTimeoutScheduler.TimeoutEventListenerregistered.- Returns:
- The number of listener registered.
-
close
public void close()
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable
-
-