Class: GrafanaReporter::Application::Webservice
- Inherits:
-
Object
- Object
- GrafanaReporter::Application::Webservice
- Defined in:
- lib/grafana_reporter/application/webservice.rb
Overview
This class provides the webservice for the reporter application. It does not make use of ‘webrick` or similar, so that it can be used without futher dependencies in conjunction with the standard asciidoctor docker container.
Constant Summary collapse
- STATUS =
Array of possible webservice running states
%I[stopped running stopping].freeze
Instance Method Summary collapse
-
#initialize ⇒ Webservice
constructor
A new instance of Webservice.
-
#run(config) ⇒ Object
Runs the webservice with the given Configuration object.
-
#running? ⇒ Boolean
True, if webservice is up and running, false otherwise.
-
#stop! ⇒ Object
Forces stopping the webservice.
-
#stopped? ⇒ Boolean
True, if webservice is stopped, false otherwise.
Constructor Details
#initialize ⇒ Webservice
Returns a new instance of Webservice.
12 13 14 15 |
# File 'lib/grafana_reporter/application/webservice.rb', line 12 def initialize @reports = [] @status = :stopped end |
Instance Method Details
#run(config) ⇒ Object
Runs the webservice with the given Configuration object.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/grafana_reporter/application/webservice.rb', line 18 def run(config) @config = config @logger = config.logger # start webserver @server = TCPServer.new(@config.webserver_port) @logger.info("Server listening on port #{@config.webserver_port}...") @progress_reporter = Thread.new {} @status = :running begin accept_requests_loop rescue SystemExit, Interrupt @logger.info("Server shutting down.") stop! retry end @status = :stopped end |
#running? ⇒ Boolean
Returns True, if webservice is up and running, false otherwise.
45 46 47 |
# File 'lib/grafana_reporter/application/webservice.rb', line 45 def running? @status == :running end |
#stop! ⇒ Object
Forces stopping the webservice.
50 51 52 53 54 55 56 57 |
# File 'lib/grafana_reporter/application/webservice.rb', line 50 def stop! @status = :stopping # invoke a new request, so that the webservice stops. socket = TCPSocket.new('localhost', @config.webserver_port) socket.send '', 0 socket.close end |
#stopped? ⇒ Boolean
Returns True, if webservice is stopped, false otherwise.
40 41 42 |
# File 'lib/grafana_reporter/application/webservice.rb', line 40 def stopped? @status == :stopped end |