class XPluginImp implements Plugin {
    DisposableServer _server = null;

    public static String solon_boot_ver() {
        return "reactor-netty-http 1.0.20/" + Solon.version();
    }

    @Override
    public void start(AppContext context) {
        if (Solon.app().enableHttp() == false) {
            return;
        }

        new Thread(() -> {
            start0(Solon.app());
        });
    }

    private void start0(SolonApp app) {<FILL_FUNCTION_BODY>}

    @Override
    public void stop() throws Throwable {
        if (_server != null) {
            _server.dispose();
            _server = null;

            LogUtil.global().info("Server:main: reactor-netty-http: Has Stopped (" + solon_boot_ver() + ")");
        }
    }
}

        long time_start = System.currentTimeMillis();

        try {
            RnHttpHandler handler = new RnHttpHandler();

            //
            // https://projectreactor.io/docs/netty/release/reference/index.html#_starting_and_stopping_2
            //
            _server = HttpServer.create()
                    .compress(true)
                    .protocol(HttpProtocol.HTTP11)
                    .port(app.cfg().serverPort())
                    .handle(handler)
                    .bindNow();


            _server.onDispose()
                    .block();

            long time_end = System.currentTimeMillis();

            LogUtil.global().info("Connector:main: reactor-netty-http: Started ServerConnector@{HTTP/1.1,[http/1.1]}{http://localhost:" + app.cfg().serverPort() + "}");
            LogUtil.global().info("Server:main: reactor-netty-http: Started (" + solon_boot_ver() + ") @" + (time_end - time_start) + "ms");
        } catch (Throwable ex) {
            throw new RuntimeException(ex);
        }
    
<no_super_class>