aboutsummaryrefslogtreecommitdiff
path: root/central/src/main/java/moe/yuuta/dn42peering/asn/ASNHttpVerticle.java
diff options
context:
space:
mode:
Diffstat (limited to 'central/src/main/java/moe/yuuta/dn42peering/asn/ASNHttpVerticle.java')
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/asn/ASNHttpVerticle.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/central/src/main/java/moe/yuuta/dn42peering/asn/ASNHttpVerticle.java b/central/src/main/java/moe/yuuta/dn42peering/asn/ASNHttpVerticle.java
new file mode 100644
index 0000000..32f1a24
--- /dev/null
+++ b/central/src/main/java/moe/yuuta/dn42peering/asn/ASNHttpVerticle.java
@@ -0,0 +1,41 @@
+package moe.yuuta.dn42peering.asn;
+
+import io.vertx.core.AbstractVerticle;
+import io.vertx.core.Future;
+import io.vertx.core.Promise;
+import io.vertx.core.eventbus.MessageConsumer;
+import io.vertx.core.impl.logging.Logger;
+import io.vertx.core.impl.logging.LoggerFactory;
+import io.vertx.core.json.JsonObject;
+import io.vertx.serviceproxy.ServiceBinder;
+
+public class ASNHttpVerticle extends AbstractVerticle {
+ private final Logger logger = LoggerFactory.getLogger(getClass().getSimpleName());
+
+ private MessageConsumer<JsonObject> consumer;
+
+ @Override
+ public void start(Promise<Void> startPromise) throws Exception {
+ consumer = new ServiceBinder(vertx)
+ .setAddress(IASNHttpService.ADDRESS)
+ .register(IASNHttpService.class, new IASNHttpServiceImpl(vertx));
+ consumer.completionHandler(ar -> {
+ if (ar.succeeded()) {
+ startPromise.complete();
+ } else {
+ startPromise.fail(ar.cause());
+ }
+ });
+ }
+
+ @Override
+ public void stop(Promise<Void> stopPromise) throws Exception {
+ Future.future(f -> consumer.unregister(ar -> {
+ if (ar.succeeded()) f.complete();
+ else f.fail(ar.cause());
+ })).onComplete(ar -> {
+ if (ar.succeeded()) stopPromise.complete();
+ else stopPromise.fail(ar.cause());
+ });
+ }
+}