diff options
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.java | 41 |
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()); + }); + } +} |