Example usage for io.netty.util.concurrent DefaultPromise setSuccess

List of usage examples for io.netty.util.concurrent DefaultPromise setSuccess

Introduction

In this page you can find the example usage for io.netty.util.concurrent DefaultPromise setSuccess.

Prototype

@Override
    public Promise<V> setSuccess(V result) 

Source Link

Usage

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);
}