class Fluent::PluginHelper::HttpServer::Server
Public Class Methods
new(addr:, port:, logger:, default_app: nil, tls_context: nil) { |self| ... }
click to toggle source
@param logger [Logger] @param default_app [Object] This method must have call. @param tls_context [OpenSSL::SSL::SSLContext]
# File lib/fluent/plugin_helper/http_server/server.rb, line 33 def initialize(addr:, port:, logger:, default_app: nil, tls_context: nil) @addr = addr @port = port @logger = logger # TODO: support http2 scheme = tls_context ? 'https' : 'http' @uri = URI("#{scheme}://#{@addr}:#{@port}").to_s @router = Router.new(default_app) @reactor = Async::Reactor.new(nil, logger: Fluent::Log::ConsoleAdapter.wrap(@logger)) opts = if tls_context { ssl_context: tls_context } else {} end @server = Async::HTTP::Server.new(App.new(@router, @logger), Async::HTTP::Endpoint.parse(@uri, **opts)) if block_given? yield(self) end end
Public Instance Methods
start(notify = nil)
click to toggle source
# File lib/fluent/plugin_helper/http_server/server.rb, line 56 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
stop()
click to toggle source
# File lib/fluent/plugin_helper/http_server/server.rb, line 70 def stop @logger.debug('closing HTTP server') if @reactor @reactor.stop end end