/** * Creates a default reactor with timeout and timesource. * * @param timeout timeout * @param timeSource time source * @return a reactor */ static Reactor reactor(final Duration timeout, final TimeSource timeSource) { return new ReactorImpl(timeout, timeSource); }
@Override public <T> Promise<Void> all(List<Promise<T>> promises) { return all(defaultTimeout, promises); }
@Override public Promise<Void> any(Promise<?>... promises) { return any(defaultTimeout, promises); }
@Override public void process() { copyTaskQueues(); currentTime = timeSource.getTime(); processDeferRuns(); processRepeatingTasks(); processFireOnceTasks(); processAsyncPromisesReturns(); }
@Override public <T> Promise<Void> any(final Duration timeout, final List<Promise<T>> promises) { return addPromiseToProcessingQueue( wrapAllOrAnyAndMakeInvokeable(anyReplay(timeout, timeSource.getTime(), promises)) ); }
@Override public <T> Promise<List<T>> promiseList(Class<T> componentType) { return addPromiseToProcessingQueue(replayPromiseList(componentType, defaultTimeout, currentTime)); }
public ReactorImpl(final Duration defaultTimeout, final TimeSource timeSource) { this.defaultTimeout = defaultTimeout; final Duration checkPromiseTimeoutInterval = defaultTimeout.dividedBy(10); this.timeSource = timeSource; this.addRepeatingTask(checkPromiseTimeoutInterval, this::processPromiseTimeouts); }
private void copyTaskQueues() { copyQueueToList(fireOnceAfterTaskList, fireOnceAfterTaskQueue); copyQueueToList(repeatingTaskList, repeatingTaskQueue); }
@Override public void process() { copyTaskQueues(); currentTime = timeSource.getTime(); processDeferRuns(); processRepeatingTasks(); processFireOnceTasks(); processAsyncPromisesReturns(); }
@Override public <T> Promise<Void> all(final Duration timeout, final List<Promise<T>> promises) { return addPromiseToProcessingQueue( wrapAllOrAnyAndMakeInvokeable(allReplay(timeout, timeSource.getTime(), promises)) ); }
@Override public <T> Promise<List<T>> promiseList(Class<T> componentType) { return addPromiseToProcessingQueue(replayPromiseList(componentType, defaultTimeout, currentTime)); }
public ReactorImpl(final Duration defaultTimeout, final TimeSource timeSource) { this.defaultTimeout = defaultTimeout; final Duration checkPromiseTimeoutInterval = defaultTimeout.dividedBy(10); this.timeSource = timeSource; this.addRepeatingTask(checkPromiseTimeoutInterval, this::processPromiseTimeouts); }
private void copyTaskQueues() { copyQueueToList(fireOnceAfterTaskList, fireOnceAfterTaskQueue); copyQueueToList(repeatingTaskList, repeatingTaskQueue); }
@Override public <T> Promise<Void> any(final Duration timeout, final List<Promise<T>> promises) { return addPromiseToProcessingQueue( wrapAllOrAnyAndMakeInvokeable(anyReplay(timeout, timeSource.getTime(), promises)) ); }
@Override public <T> Promise<Collection<T>> promiseCollection(Class<T> componentType) { return addPromiseToProcessingQueue(replayPromiseCollection(componentType, defaultTimeout, currentTime)); }
@Override public Promise<Void> all(Promise<?>... promises) { return all(defaultTimeout, promises); }
@Override public <T> Promise<Void> any(List<Promise<T>> promises) { return any(defaultTimeout, promises); }
/** * Creates a default reactor with timeout and timesource. * * @param timeout timeout * @param timeSource time source * @return a reactor */ static Reactor reactor(final Duration timeout, final TimeSource timeSource) { return new ReactorImpl(timeout, timeSource); }
@Override public Promise<Void> all(final Duration timeout, final Promise<?>... promises) { return addPromiseToProcessingQueue( wrapAllOrAnyAndMakeInvokeable(allReplay(timeout, timeSource.getTime(), promises)) ); }
@Override public Promise<String> promiseString() { return addPromiseToProcessingQueue(replayPromiseString(defaultTimeout, currentTime)); }