Example usage for io.netty.util.concurrent ImmediateExecutor INSTANCE

List of usage examples for io.netty.util.concurrent ImmediateExecutor INSTANCE

Introduction

In this page you can find the example usage for io.netty.util.concurrent ImmediateExecutor INSTANCE.

Prototype

ImmediateExecutor INSTANCE

To view the source code for io.netty.util.concurrent ImmediateExecutor INSTANCE.

Click Source Link

Usage

From source file:com.linecorp.armeria.server.thrift.ThriftServiceTest.java

License:Apache License

private static void invoke(THttpService service, HttpData content, CompletableFuture<HttpData> promise)
        throws Exception {

    final ServiceConfig cfg = new ServerBuilder().serviceAt("/", service)
            .blockingTaskExecutor(ImmediateExecutor.INSTANCE).build().config().serviceConfigs().get(0);

    final ServiceRequestContext ctx = EasyMock.createMock(ServiceRequestContext.class);
    final DefaultRequestLog reqLogBuilder = new DefaultRequestLog();
    final DefaultResponseLog resLogBuilder = new DefaultResponseLog(reqLogBuilder);

    expect(ctx.blockingTaskExecutor()).andReturn(ImmediateEventExecutor.INSTANCE).anyTimes();
    expect(ctx.requestLogBuilder()).andReturn(reqLogBuilder).anyTimes();
    expect(ctx.responseLogBuilder()).andReturn(resLogBuilder).anyTimes();
    ctx.invokeOnEnterCallbacks();//from  w ww.  ja  v  a2 s  . co m
    expectLastCall().anyTimes();
    ctx.invokeOnExitCallbacks();
    expectLastCall().anyTimes();
    replay(ctx);

    final DefaultHttpRequest req = new DefaultHttpRequest(HttpHeaders.of(HttpMethod.POST, "/"), false);

    req.write(content);
    req.close();

    final HttpResponse res = service.serve(ctx, req);
    res.aggregate().handle(voidFunction((aReq, cause) -> {
        if (cause == null) {
            if (aReq.headers().status().code() == 200) {
                promise.complete(aReq.content());
            } else {
                promise.completeExceptionally(new AssertionError(
                        aReq.headers().status() + ", " + aReq.content().toString(StandardCharsets.UTF_8)));
            }
        } else {
            promise.completeExceptionally(cause);
        }
    })).exceptionally(CompletionActions::log);
}

From source file:divconq.net.ssl.SslHandler.java

License:Apache License

public SslHandler(SSLEngine engine, boolean startTls) {
    this(engine, startTls, ImmediateExecutor.INSTANCE);
}

From source file:divconq.net.ssl.SslHandler.java

License:Apache License

private void runDelegatedTasks() {
    if (delegatedTaskExecutor == ImmediateExecutor.INSTANCE) {
        for (;;) {
            Runnable task = engine.getDelegatedTask();
            if (task == null) {
                break;
            }/*from   w w w .  j  a  va 2 s.  c om*/

            task.run();
        }
    } else {
        final List<Runnable> tasks = new ArrayList<Runnable>(2);
        for (;;) {
            final Runnable task = engine.getDelegatedTask();
            if (task == null) {
                break;
            }

            tasks.add(task);
        }

        if (tasks.isEmpty()) {
            return;
        }

        final CountDownLatch latch = new CountDownLatch(1);
        delegatedTaskExecutor.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    for (Runnable task : tasks) {
                        task.run();
                    }
                } catch (Exception e) {
                    ctx.fireExceptionCaught(e);
                } finally {
                    latch.countDown();
                }
            }
        });

        boolean interrupted = false;
        while (latch.getCount() != 0) {
            try {
                latch.await();
            } catch (InterruptedException e) {
                // Interrupt later.
                interrupted = true;
            }
        }

        if (interrupted) {
            Thread.currentThread().interrupt();
        }
    }
}

From source file:org.springframework.data.cassandra.core.cql.AsyncCqlTemplate.java

License:Apache License

@Override
public <T> ListenableFuture<T> query(AsyncPreparedStatementCreator preparedStatementCreator,
        @Nullable PreparedStatementBinder psb, ResultSetExtractor<T> resultSetExtractor)
        throws DataAccessException {

    Assert.notNull(preparedStatementCreator, "AsyncPreparedStatementCreator must not be null");
    Assert.notNull(resultSetExtractor, "ResultSetExtractor object must not be null");

    PersistenceExceptionTranslator exceptionTranslator = ex -> translateExceptionIfPossible("Query",
            toCql(preparedStatementCreator), ex);

    try {/*from w  w  w  .  j ava 2  s  . c om*/

        if (logger.isDebugEnabled()) {
            logger.debug("Preparing statement [{}] using {}", toCql(preparedStatementCreator),
                    preparedStatementCreator);
        }

        Session session = getCurrentSession();

        ListenableFuture<BoundStatement> statementFuture = new MappingListenableFutureAdapter<>(
                preparedStatementCreator.createPreparedStatement(session), preparedStatement -> {
                    if (logger.isDebugEnabled()) {
                        logger.debug("Executing prepared statement [{}]", preparedStatement);
                    }

                    return applyStatementSettings(
                            psb != null ? psb.bindValues(preparedStatement) : preparedStatement.bind());
                });

        SettableListenableFuture<T> settableListenableFuture = new SettableListenableFuture<>();

        statementFuture.addCallback(boundStatement -> Futures.addCallback(session.executeAsync(boundStatement),
                new FutureCallback<ResultSet>() {
                    @Override
                    public void onSuccess(@Nullable ResultSet result) {
                        try {
                            settableListenableFuture
                                    .set(result != null ? resultSetExtractor.extractData(result) : null);
                        } catch (DriverException e) {
                            settableListenableFuture.setException(translateException(exceptionTranslator, e));
                        }
                    }

                    @Override
                    public void onFailure(Throwable ex) {
                        if (ex instanceof DriverException) {
                            settableListenableFuture.setException(
                                    translateException(exceptionTranslator, (DriverException) ex));
                        } else {
                            settableListenableFuture.setException(ex);
                        }
                    }
                }, ImmediateExecutor.INSTANCE), ex -> {
                    if (ex instanceof DriverException) {
                        settableListenableFuture
                                .setException(translateException(exceptionTranslator, (DriverException) ex));
                    } else {
                        settableListenableFuture.setException(ex);
                    }
                });

        return settableListenableFuture;

    } catch (DriverException e) {
        throw translateException(exceptionTranslator, e);
    }
}

From source file:org.springframework.data.cassandra.core.cql.GuavaListenableFutureAdapter.java

License:Apache License

private static <T> ListenableFuture<T> adaptListenableFuture(
        com.google.common.util.concurrent.ListenableFuture<T> guavaFuture,
        PersistenceExceptionTranslator exceptionTranslator) {

    SettableListenableFuture<T> settableFuture = new SettableListenableFuture<>();

    Futures.addCallback(guavaFuture, new FutureCallback<T>() {
        @Override/*from ww w . j  a  v  a  2 s . co  m*/
        public void onSuccess(@Nullable T result) {
            settableFuture.set(result);
        }

        @Override
        public void onFailure(Throwable t) {
            if (t instanceof RuntimeException) {
                DataAccessException dataAccessException = exceptionTranslator
                        .translateExceptionIfPossible((RuntimeException) t);

                if (dataAccessException != null) {
                    settableFuture.setException(dataAccessException);
                    return;
                }
            }

            settableFuture.setException(t);
        }
    }, ImmediateExecutor.INSTANCE);

    return settableFuture;
}

From source file:org.springframework.data.cassandra.core.cql.session.DefaultBridgedReactiveSession.java

License:Apache License

@Override
public Mono<ReactiveResultSet> execute(Statement statement) {

    Assert.notNull(statement, "Statement must not be null");

    return Mono.create(sink -> {

        try {/*w  ww.  j  a  va  2  s . c om*/
            if (logger.isDebugEnabled()) {
                logger.debug("Executing Statement [{}]", statement);
            }

            ListenableFuture<ResultSet> future = this.session.executeAsync(statement);

            ListenableFuture<ReactiveResultSet> resultSetFuture = Futures.transform(future,
                    DefaultReactiveResultSet::new, ImmediateExecutor.INSTANCE);

            adaptFuture(resultSetFuture, sink);
        } catch (Exception cause) {
            sink.error(cause);
        }
    });
}