Example usage for com.google.common.util.concurrent FluentFuture from

List of usage examples for com.google.common.util.concurrent FluentFuture from

Introduction

In this page you can find the example usage for com.google.common.util.concurrent FluentFuture from.

Prototype

public static <V> FluentFuture<V> from(ListenableFuture<V> future) 

Source Link

Document

Converts the given ListenableFuture to an equivalent FluentFuture .

Usage

From source file:io.airlift.drift.transport.netty.server.ThriftServerHandler.java

private ListenableFuture<ThriftFrame> decodeMessage(ChannelHandlerContext context, TTransport messageData,
        Transport transport, Protocol protocol, Map<String, String> headers, boolean supportOutOfOrderResponse)
        throws Exception {
    long start = System.nanoTime();
    TProtocolReader protocolReader = protocol.createProtocol(messageData);

    TMessage message = protocolReader.readMessageBegin();
    Optional<MethodMetadata> methodMetadata = methodInvoker.getMethodMetadata(message.getName());
    if (!methodMetadata.isPresent()) {
        return immediateFuture(writeApplicationException(context, message.getName(), transport, protocol,
                message.getSequenceId(), supportOutOfOrderResponse, UNKNOWN_METHOD,
                "Invalid method name: '" + message.getName() + "'", null));
    }// w  ww  .j av a  2  s .  c o  m
    MethodMetadata method = methodMetadata.get();

    if (message.getType() != TMessageType.CALL && message.getType() != TMessageType.ONEWAY) {
        return immediateFuture(writeApplicationException(context, message.getName(), transport, protocol,
                message.getSequenceId(), supportOutOfOrderResponse, INVALID_MESSAGE_TYPE,
                "Invalid method message type: '" + message.getType() + "'", null));
    }

    Map<Short, Object> parameters = readArguments(method, protocolReader);

    ListenableFuture<Object> result = methodInvoker
            .invoke(new ServerInvokeRequest(method, headers, parameters));
    methodInvoker.recordResult(message.getName(), start, result);
    return FluentFuture.from(result).transformAsync(value -> {
        try {
            return immediateFuture(writeSuccessResponse(context, method, transport, protocol,
                    message.getSequenceId(), supportOutOfOrderResponse, value));
        } catch (Exception e) {
            return immediateFailedFuture(e);
        }
    }, directExecutor()).withTimeout(requestTimeout.toMillis(), MILLISECONDS, timeoutExecutor)
            .catchingAsync(Exception.class, exception -> {
                try {
                    return immediateFuture(writeExceptionResponse(context, method, transport, protocol,
                            message.getSequenceId(), supportOutOfOrderResponse, exception));
                } catch (Exception e) {
                    return immediateFailedFuture(e);
                }
            }, directExecutor());
}

From source file:io.prestosql.proxy.ProxyResource.java

private FluentFuture<ProxyResponse> executeHttp(Request request) {
    return FluentFuture.from(httpClient.executeAsync(request, new ProxyResponseHandler()));
}