blob: c24c29a304e3f592085bccbdc63e9d80853a99af (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package moe.yuuta.dn42peering.agent.grpc;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
import io.vertx.core.impl.logging.Logger;
import io.vertx.core.impl.logging.LoggerFactory;
import io.vertx.grpc.VertxServer;
import io.vertx.grpc.VertxServerBuilder;
import moe.yuuta.dn42peering.RPC;
import moe.yuuta.dn42peering.agent.Persistent;
public class RPCVerticle extends AbstractVerticle {
private final Logger logger = LoggerFactory.getLogger(getClass().getSimpleName());
private VertxServer server;
@Override
public void start(Promise<Void> startPromise) throws Exception {
Persistent.recover(vertx)
.onComplete(ar -> {
if(ar.succeeded()) {
server = VertxServerBuilder
.forAddress(vertx, vertx.getOrCreateContext().config().getString("internal_ip"),
RPC.AGENT_PORT)
.addService(new AgentServiceImpl(vertx))
.build()
.start(startPromise);
} else {
logger.error("Cannot recover from persistent state, aborting.", ar.cause());
startPromise.fail("Recover failed.");
}
});
}
@Override
public void stop(Promise<Void> stopPromise) throws Exception {
if(server != null)
server.shutdown(stopPromise);
}
}
|