Example usage for io.vertx.core.http HttpServer close

List of usage examples for io.vertx.core.http HttpServer close

Introduction

In this page you can find the example usage for io.vertx.core.http HttpServer close.

Prototype

Future<Void> close();

Source Link

Document

Close the server.

Usage

From source file:io.nonobot.core.impl.BotImpl.java

License:Apache License

public static Bot createShared(Vertx vertx, BotOptions options, Handler<AsyncResult<Void>> completionHandler) {
    BotImpl bot = bots.computeIfAbsent(new Key(vertx, options.getName()),
            key -> new BotImpl(vertx, options.getName()));
    HttpServer server;
    if (options.getHttpServerOptions() != null) {
        server = vertx.createHttpServer(options.getHttpServerOptions());
        server.requestHandler(bot.webRouter::accept);
        server.listen(ar -> {/*w w w.j  a  v  a  2  s  . c om*/
            if (ar.succeeded()) {
                completionHandler.handle(Future.succeededFuture());
            } else {
                completionHandler.handle(Future.failedFuture(ar.cause()));
            }
        });
    } else {
        server = null;
        completionHandler.handle(Future.succeededFuture());
    }
    return new Bot() {
        @Override
        public Vertx vertx() {
            return bot.vertx();
        }

        @Override
        public ChatRouter chatRouter() {
            return bot.chatRouter();
        }

        @Override
        public Router webRouter() {
            return bot.webRouter();
        }

        @Override
        public String name() {
            return bot.name();
        }

        @Override
        public void close() {
            boolean open = bot.closed;
            bot.close();
            if (open && server != null) {
                server.close();
            }
        }
    };
}