@Override public void execute(Runnable callback) { checkOperation(OperationType.COMMAND, "callbacks can only be scheduled during command execution"); checkNotNull(callback, "callback cannot be null"); tasks.add(callback); }
@Override public Scheduled schedule(Duration delay, Runnable callback) { checkOperation(OperationType.COMMAND, "callbacks can only be scheduled during command execution"); checkArgument(!delay.isNegative(), "delay cannot be negative"); checkNotNull(callback, "callback cannot be null"); log.trace("Scheduled callback {} with delay {}", callback, delay); return new ScheduledTask(callback, delay.toMillis()).schedule(); }
@Override public Scheduled schedule(Duration initialDelay, Duration interval, Runnable callback) { checkOperation(OperationType.COMMAND, "callbacks can only be scheduled during command execution"); checkArgument(!initialDelay.isNegative(), "initialDelay cannot be negative"); checkArgument(!interval.isNegative(), "interval cannot be negative"); checkNotNull(callback, "callback cannot be null"); log.trace("Scheduled repeating callback {} with initial delay {} and interval {}", callback, initialDelay, interval); return new ScheduledTask(callback, initialDelay.toMillis(), interval.toMillis()).schedule(); }