aboutsummaryrefslogtreecommitdiff
path: root/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/RPCVerticle.java
diff options
context:
space:
mode:
Diffstat (limited to 'agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/RPCVerticle.java')
-rw-r--r--agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/RPCVerticle.java28
1 files changed, 21 insertions, 7 deletions
diff --git a/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/RPCVerticle.java b/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/RPCVerticle.java
index 3390b47..c24c29a 100644
--- a/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/RPCVerticle.java
+++ b/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/RPCVerticle.java
@@ -2,25 +2,39 @@ 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 {
- server = VertxServerBuilder
- .forAddress(vertx, vertx.getOrCreateContext().config().getString("internal_ip"),
- RPC.AGENT_PORT)
- .addService(new AgentServiceImpl(vertx))
- .build()
- .start(startPromise);
+ 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 {
- server.shutdown(stopPromise);
+ if(server != null)
+ server.shutdown(stopPromise);
}
}