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
 
 - 
 
 -