import io.activej.launchers.rpc.RpcServerLauncher;
import io.activej.config.Config;
import io.activej.inject.annotation.Inject;
import io.activej.promise.Promise;
import io.activej.rpc.client.RpcClient;
import io.activej.rpc.server.RpcServer;
import io.activej.serializer.SerializerBuilder;
public class RpcExample {
public interface Calculator {
Promise<Integer> add(int a, int b);
}
public static class CalculatorImpl implements Calculator {
@Override
public Promise<Integer> add(int a, int b) {
Promise.ofBlockingCallable(() -> a + b);
}
}
public static void main(String[] args) throws Exception {
RpcServer server = RpcServer.create()
.withMessageSerializer(SerializerBuilder.createObjectSerializer())
.withHandler(Calculator.class, new CalculatorImpl())
.build();
server.listen();
RpcClient client = RpcClient.create()
.withMessageSerializer(SerializerBuilder.createObjectSerializer())
.withMessageTypes(Calculator.class)
.withAddress("localhost", 5353)
.build();
Calculator calculator = client.getInstance(Calculator.class);
Promise<Integer> result = calculator.add(2, 3);
result.whenResult(System.out::println);
client.close();
server.close();
}
}