Search in sources :

Example 6 with ResponseFuture

use of com.alibaba.dubbo.remoting.exchange.ResponseFuture in project dubbo by alibaba.

the class FutureFilter method asyncCallback.

private void asyncCallback(final Invoker<?> invoker, final Invocation invocation) {
    Future<?> f = RpcContext.getContext().getFuture();
    if (f instanceof FutureAdapter) {
        ResponseFuture future = ((FutureAdapter<?>) f).getFuture();
        future.setCallback(new ResponseCallback() {

            public void done(Object rpcResult) {
                if (rpcResult == null) {
                    logger.error(new IllegalStateException("invalid result value : null, expected " + Result.class.getName()));
                    return;
                }
                // /must be rpcResult
                if (!(rpcResult instanceof Result)) {
                    logger.error(new IllegalStateException("invalid result type :" + rpcResult.getClass() + ", expected " + Result.class.getName()));
                    return;
                }
                Result result = (Result) rpcResult;
                if (result.hasException()) {
                    fireThrowCallback(invoker, invocation, result.getException());
                } else {
                    fireReturnCallback(invoker, invocation, result.getValue());
                }
            }

            public void caught(Throwable exception) {
                fireThrowCallback(invoker, invocation, exception);
            }
        });
    }
}
Also used : FutureAdapter(com.alibaba.dubbo.rpc.protocol.dubbo.FutureAdapter) ResponseCallback(com.alibaba.dubbo.remoting.exchange.ResponseCallback) ResponseFuture(com.alibaba.dubbo.remoting.exchange.ResponseFuture) Result(com.alibaba.dubbo.rpc.Result)

Example 7 with ResponseFuture

use of com.alibaba.dubbo.remoting.exchange.ResponseFuture in project dubbo by alibaba.

the class ClientToServerTest method testFuture.

@Test
public void testFuture() throws Exception {
    ResponseFuture future = client.request(new World("world"));
    Hello result = (Hello) future.get();
    Assert.assertEquals("hello,world", result.getName());
}
Also used : ResponseFuture(com.alibaba.dubbo.remoting.exchange.ResponseFuture) Test(org.junit.Test)

Example 8 with ResponseFuture

use of com.alibaba.dubbo.remoting.exchange.ResponseFuture in project dubbo by alibaba.

the class Main method test.

private static void test(int port) throws Exception {
    ExchangeChannel client = Exchangers.connect(URL.valueOf("dubbo://localhost:" + port));
    MockResult result = (MockResult) client.request(new RpcMessage(DemoService.class.getName(), "plus", new Class<?>[] { int.class, int.class }, new Object[] { 55, 25 })).get();
    System.out.println("55+25=" + result.getResult());
    for (int i = 0; i < 100; i++) client.request(new RpcMessage(DemoService.class.getName(), "sayHello", new Class<?>[] { String.class }, new Object[] { "qianlei" + i }));
    for (int i = 0; i < 100; i++) client.request(new Main.Data());
    System.out.println("=====test invoke=====");
    for (int i = 0; i < 100; i++) {
        ResponseFuture future = client.request(new Main.Data());
        System.out.println("invoke and get");
        System.out.println("invoke result:" + future.get());
    }
    System.out.println("=====the end=====");
}
Also used : ExchangeChannel(com.alibaba.dubbo.remoting.exchange.ExchangeChannel) ResponseFuture(com.alibaba.dubbo.remoting.exchange.ResponseFuture)

Aggregations

ResponseFuture (com.alibaba.dubbo.remoting.exchange.ResponseFuture)8 Result (com.alibaba.dubbo.rpc.Result)3 ResponseCallback (com.alibaba.dubbo.remoting.exchange.ResponseCallback)2 RpcContext (com.alibaba.dubbo.rpc.RpcContext)2 RpcResult (com.alibaba.dubbo.rpc.RpcResult)2 FutureAdapter (com.alibaba.dubbo.rpc.protocol.dubbo.FutureAdapter)2 Test (org.junit.Test)2 Span (brave.Span)1 Kind (brave.Span.Kind)1 CurrentTraceContext (brave.propagation.CurrentTraceContext)1 Scope (brave.propagation.CurrentTraceContext.Scope)1 TraceContext (brave.propagation.TraceContext)1 RemotingException (com.alibaba.dubbo.remoting.RemotingException)1 TimeoutException (com.alibaba.dubbo.remoting.TimeoutException)1 ExchangeChannel (com.alibaba.dubbo.remoting.exchange.ExchangeChannel)1 ExchangeClient (com.alibaba.dubbo.remoting.exchange.ExchangeClient)1 SimpleFuture (com.alibaba.dubbo.remoting.exchange.support.SimpleFuture)1 RpcException (com.alibaba.dubbo.rpc.RpcException)1 RpcInvocation (com.alibaba.dubbo.rpc.RpcInvocation)1 GenericService (com.alibaba.dubbo.rpc.service.GenericService)1