Package org.forgerock.opendj.ldap
Class TimeoutScheduler
java.lang.Object
org.forgerock.opendj.ldap.TimeoutScheduler
- All Implemented Interfaces:
Closeable,AutoCloseable
Invokes
TimeoutScheduler.TimeoutEventListener at a regular interval.
All tasks registered with the scheduleAtFixedRate(TimeoutEventListener) method are called back with
TimeoutScheduler.TimeoutEventListener.checkForTimeout(long).
Internally, this class schedules a single "root" task for all the registered TimeoutScheduler.TimeoutEventListeners which is
automatically started at the first registered TimeoutScheduler.TimeoutEventListener and stopped once all
TimeoutScheduler.TimeoutEventListeners has been de-registered.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceListener on timeout events. -
Constructor Summary
ConstructorsConstructorDescriptionTimeoutScheduler(com.forgerock.opendj.util.ReferenceCountedObject.Reference<ScheduledExecutorService> scheduler, Duration period) Creates a newTimeoutScheduler. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()longReturns the period in milliseconds between successive task invocations.longnow()Returns the current time in milliseconds from theClockof thisTimeoutScheduler.booleanDe-registers a task for periodic invocation.voidSchedules the task for periodic invocation.intReturns the number ofTimeoutScheduler.TimeoutEventListenerregistered.
-
Constructor Details
-
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 Details
-
scheduleAtFixedRate
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
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
-