List of usage examples for io.netty.util.concurrent DefaultPromise setSuccess
@Override
public Promise<V> setSuccess(V result)
From source file:biz.paluch.spinach.support.TestEventLoopGroupProvider.java
License:Apache License
@Override public Promise<Boolean> release(EventExecutorGroup eventLoopGroup, long quietPeriod, long timeout, TimeUnit unit) {//from w w w. j a v a 2 s.c om DefaultPromise<Boolean> result = new DefaultPromise<Boolean>(ImmediateEventExecutor.INSTANCE); result.setSuccess(true); return result; }
From source file:com.lambdaworks.redis.resource.DefaultClientResources.java
License:Apache License
/** * Shutdown the {@link ClientResources}. * * @param quietPeriod the quiet period as described in the documentation * @param timeout the maximum amount of time to wait until the executor is shutdown regardless if a task was submitted * during the quiet period//from w w w.j a va2 s .c o m * @param timeUnit the unit of {@code quietPeriod} and {@code timeout} * @return eventually the success/failure of the shutdown without errors. */ @SuppressWarnings("unchecked") public Future<Boolean> shutdown(long quietPeriod, long timeout, TimeUnit timeUnit) { shutdownCalled = true; DefaultPromise<Boolean> overall = new DefaultPromise<>(GlobalEventExecutor.INSTANCE); DefaultPromise<Boolean> lastRelease = new DefaultPromise<>(GlobalEventExecutor.INSTANCE); Futures.PromiseAggregator<Boolean, Promise<Boolean>> aggregator = new Futures.PromiseAggregator<>(overall); aggregator.expectMore(1); if (!sharedEventLoopGroupProvider) { aggregator.expectMore(1); } if (!sharedEventExecutor) { aggregator.expectMore(1); } aggregator.arm(); if (metricEventPublisher != null) { metricEventPublisher.shutdown(); } if (!sharedTimer) { timer.stop(); } if (!sharedEventLoopGroupProvider) { Future<Boolean> shutdown = eventLoopGroupProvider.shutdown(quietPeriod, timeout, timeUnit); if (shutdown instanceof Promise) { aggregator.add((Promise<Boolean>) shutdown); } else { aggregator.add(toBooleanPromise(shutdown)); } } if (!sharedEventExecutor) { Future<?> shutdown = eventExecutorGroup.shutdownGracefully(quietPeriod, timeout, timeUnit); aggregator.add(toBooleanPromise(shutdown)); } if (!sharedCommandLatencyCollector) { commandLatencyCollector.shutdown(); } aggregator.add(lastRelease); lastRelease.setSuccess(null); return toBooleanPromise(overall); }
From source file:com.lambdaworks.redis.resource.DefaultEventLoopGroupProvider.java
License:Apache License
@Override public Promise<Boolean> release(EventExecutorGroup eventLoopGroup, long quietPeriod, long timeout, TimeUnit unit) {/*from w ww . j a v a2 s . c o m*/ Class<?> key = getKey(release(eventLoopGroup)); if ((key == null && eventLoopGroup.isShuttingDown()) || refCounter.containsKey(eventLoopGroup)) { DefaultPromise<Boolean> promise = new DefaultPromise<>(GlobalEventExecutor.INSTANCE); promise.setSuccess(true); return promise; } if (key != null) { eventLoopGroups.remove(key); } Future<?> shutdownFuture = eventLoopGroup.shutdownGracefully(quietPeriod, timeout, unit); return toBooleanPromise(shutdownFuture); }
From source file:com.lambdaworks.redis.resource.DefaultEventLoopGroupProvider.java
License:Apache License
@Override @SuppressWarnings("unchecked") public Future<Boolean> shutdown(long quietPeriod, long timeout, TimeUnit timeUnit) { shutdownCalled = true;//from www . j ava2s . co m Map<Class<? extends EventExecutorGroup>, EventExecutorGroup> copy = new HashMap<>(eventLoopGroups); DefaultPromise<Boolean> overall = new DefaultPromise<>(GlobalEventExecutor.INSTANCE); DefaultPromise<Boolean> lastRelease = new DefaultPromise<>(GlobalEventExecutor.INSTANCE); Futures.PromiseAggregator<Boolean, Promise<Boolean>> aggregator = new Futures.PromiseAggregator<>(overall); aggregator.expectMore(1 + copy.size()); aggregator.arm(); for (EventExecutorGroup executorGroup : copy.values()) { Promise<Boolean> shutdown = toBooleanPromise(release(executorGroup, quietPeriod, timeout, timeUnit)); aggregator.add(shutdown); } aggregator.add(lastRelease); lastRelease.setSuccess(null); return toBooleanPromise(overall); }
From source file:com.lambdaworks.redis.resource.Futures.java
License:Apache License
/** * Create a promise that emits a {@code Boolean} value on completion of the {@code future} * // ww w .j a va2 s . com * @param future the future. * @return Promise emitting a {@code Boolean} value. {@literal true} if the {@code future} completed successfully, otherwise * the cause wil be transported. */ static Promise<Boolean> toBooleanPromise(Future<?> future) { final DefaultPromise<Boolean> result = new DefaultPromise<>(GlobalEventExecutor.INSTANCE); future.addListener(new GenericFutureListener<Future<Object>>() { @Override public void operationComplete(Future<Object> future) throws Exception { if (future.isSuccess()) { result.setSuccess(true); } else { result.setFailure(future.cause()); } } }); return result; }
From source file:com.lambdaworks.redis.resource.FuturesTest.java
License:Apache License
@Test public void regularUse() throws Exception { final DefaultPromise<Boolean> target = new DefaultPromise<>(GlobalEventExecutor.INSTANCE); Futures.PromiseAggregator<Boolean, Promise<Boolean>> sut = new Futures.PromiseAggregator<>(target); sut.expectMore(1);/* w w w. j a va 2s . c om*/ sut.arm(); DefaultPromise<Boolean> part = new DefaultPromise<>(GlobalEventExecutor.INSTANCE); sut.add(part); assertThat(target.isDone()).isFalse(); part.setSuccess(true); WaitFor.waitOrTimeout(new Condition() { @Override public boolean isSatisfied() { return target.isDone(); } }, timeout(seconds(5))); assertThat(target.isDone()).isTrue(); }
From source file:com.lambdaworks.redis.TestEventLoopGroupProvider.java
License:Apache License
@Override public Promise<Boolean> release(EventExecutorGroup eventLoopGroup, long quietPeriod, long timeout, TimeUnit unit) {//from w w w .java2 s.c o m DefaultPromise<Boolean> result = new DefaultPromise<>(ImmediateEventExecutor.INSTANCE); result.setSuccess(true); return result; }
From source file:io.lettuce.core.resource.DefaultClientResources.java
License:Apache License
/** * Shutdown the {@link ClientResources}. * * @param quietPeriod the quiet period as described in the documentation * @param timeout the maximum amount of time to wait until the executor is shutdown regardless if a task was submitted * during the quiet period// w w w . j a v a2s .c o m * @param timeUnit the unit of {@code quietPeriod} and {@code timeout} * @return eventually the success/failure of the shutdown without errors. */ @SuppressWarnings("unchecked") public Future<Boolean> shutdown(long quietPeriod, long timeout, TimeUnit timeUnit) { shutdownCalled = true; DefaultPromise<Boolean> overall = new DefaultPromise<Boolean>(GlobalEventExecutor.INSTANCE); DefaultPromise<Boolean> lastRelease = new DefaultPromise<Boolean>(GlobalEventExecutor.INSTANCE); Futures.PromiseAggregator<Boolean, Promise<Boolean>> aggregator = new Futures.PromiseAggregator<Boolean, Promise<Boolean>>( overall); aggregator.expectMore(1); if (!sharedEventLoopGroupProvider) { aggregator.expectMore(1); } if (!sharedEventExecutor) { aggregator.expectMore(1); } aggregator.arm(); if (metricEventPublisher != null) { metricEventPublisher.shutdown(); } if (!sharedTimer) { timer.stop(); } if (!sharedEventLoopGroupProvider) { Future<Boolean> shutdown = eventLoopGroupProvider.shutdown(quietPeriod, timeout, timeUnit); if (shutdown instanceof Promise) { aggregator.add((Promise<Boolean>) shutdown); } else { aggregator.add(toBooleanPromise(shutdown)); } } if (!sharedEventExecutor) { Future<?> shutdown = eventExecutorGroup.shutdownGracefully(quietPeriod, timeout, timeUnit); aggregator.add(toBooleanPromise(shutdown)); } if (!sharedCommandLatencyCollector) { commandLatencyCollector.shutdown(); } aggregator.add(lastRelease); lastRelease.setSuccess(null); return toBooleanPromise(overall); }
From source file:io.lettuce.core.resource.DefaultEventLoopGroupProvider.java
License:Apache License
@Override public Promise<Boolean> release(EventExecutorGroup eventLoopGroup, long quietPeriod, long timeout, TimeUnit unit) {/*w w w . j a v a 2 s. c o m*/ Class<?> key = getKey(release(eventLoopGroup)); if ((key == null && eventLoopGroup.isShuttingDown()) || refCounter.containsKey(eventLoopGroup)) { DefaultPromise<Boolean> promise = new DefaultPromise<Boolean>(GlobalEventExecutor.INSTANCE); promise.setSuccess(true); return promise; } if (key != null) { eventLoopGroups.remove(key); } Future<?> shutdownFuture = eventLoopGroup.shutdownGracefully(quietPeriod, timeout, unit); return toBooleanPromise(shutdownFuture); }
From source file:io.lettuce.core.resource.DefaultEventLoopGroupProvider.java
License:Apache License
@Override @SuppressWarnings("unchecked") public Future<Boolean> shutdown(long quietPeriod, long timeout, TimeUnit timeUnit) { shutdownCalled = true;/* ww w .j av a 2s. c o m*/ Map<Class<? extends EventExecutorGroup>, EventExecutorGroup> copy = new HashMap<>(eventLoopGroups); DefaultPromise<Boolean> overall = new DefaultPromise<Boolean>(GlobalEventExecutor.INSTANCE); DefaultPromise<Boolean> lastRelease = new DefaultPromise<Boolean>(GlobalEventExecutor.INSTANCE); Futures.PromiseAggregator<Boolean, Promise<Boolean>> aggregator = new Futures.PromiseAggregator<Boolean, Promise<Boolean>>( overall); aggregator.expectMore(1 + copy.size()); aggregator.arm(); for (EventExecutorGroup executorGroup : copy.values()) { Promise<Boolean> shutdown = toBooleanPromise(release(executorGroup, quietPeriod, timeout, timeUnit)); aggregator.add(shutdown); } aggregator.add(lastRelease); lastRelease.setSuccess(null); return toBooleanPromise(overall); }