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);
}
});
}
}
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());
}
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=====");
}
Aggregations