Example usage for org.apache.thrift AsyncProcessFunction start

List of usage examples for org.apache.thrift AsyncProcessFunction start

Introduction

In this page you can find the example usage for org.apache.thrift AsyncProcessFunction start.

Prototype

public abstract void start(I iface, T args, AsyncMethodCallback<R> resultHandler) throws TException;

Source Link

Usage

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

License:Apache License

private static void invokeAsynchronously(Object impl, ThriftFunction func,
        TBase<TBase<?, ?>, TFieldIdEnum> args, DefaultRpcResponse reply) throws TException {

    final AsyncProcessFunction<Object, TBase<TBase<?, ?>, TFieldIdEnum>, Object> f = func.asyncFunc();
    f.start(impl, args, new AsyncMethodCallback<Object>() {
        @Override//  ww  w. ja  v  a  2 s. c  o  m
        public void onComplete(Object response) {
            if (func.isOneWay()) {
                reply.complete(null);
            } else {
                reply.complete(response);
            }
        }

        @Override
        public void onError(Exception e) {
            reply.completeExceptionally(e);
        }
    });
}

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

License:Apache License

private void invokeAsynchronously(ThriftServiceInvocationContext ctx, Promise<Object> promise) {
    final ThriftFunction func = ctx.func;
    final AsyncProcessFunction<Object, TBase<TBase<?, ?>, TFieldIdEnum>, Object> f = func.asyncFunc();

    try {//from   w w w  . j  a  v  a2  s .  c  o m
        f.start(service, ctx.args, new AsyncMethodCallback<Object>() {
            @Override
            public void onComplete(Object response) {
                if (func.isOneway()) {
                    safeSetSuccess(ctx, promise, null);
                    return;
                }

                try {
                    TBase<TBase<?, ?>, TFieldIdEnum> result = func.newResult();
                    func.setSuccess(result, response);
                    safeSetSuccess(ctx, promise, result);
                } catch (Throwable t) {
                    safeSetFailure(ctx, promise, t);
                }
            }

            @Override
            public void onError(Exception e) {
                safeSetFailure(ctx, promise, e);
            }
        });
    } catch (Throwable t) {
        safeSetFailure(ctx, promise, t);
    }
}