class Fluent::PluginHelper::HttpServer::Server
def initialize(addr:, port:, logger:, default_app: nil)
-
default_app(Object) -- This method must have #call.
def initialize(addr:, port:, logger:, default_app: nil) @addr = addr @port = port @logger = logger # TODO: support https and http2 @uri = URI("http://#{@addr}:#{@port}").to_s @router = Router.new(default_app) @reactor = Async::Reactor.new @server = Async::HTTP::Server.new( App.new(@router, @logger), Async::HTTP::Endpoint.parse(@uri) ) if block_given? yield(self) end end
def start(notify = nil)
def start(notify = nil) @logger.debug("Start async HTTP server listening #{@uri}") task = @reactor.run do @server.run if notify notify.push(:ready) end end task.stop @logger.debug('Finished HTTP server') end
def stop
def stop @logger.debug('closing HTTP server') if @reactor @reactor.stop end end