Sha256: 52316f222f49e2e868878eb8a686f40507900d56d891376f4b15bc9130fbd730

Contents?: true

Size: 1.22 KB

Versions: 3

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

require 'svcbase/appversion'
require 'svcbase/dumpstats'
require 'svcbase/random'
require 'svcbase/worker'

module Core
  # actual server manager
  class Server
    include Singleton

    ID = Core::Random.short_id.freeze

    private def initialize
      @workers = []

      register_worker(Core::Workers::DumpStats.instance)
    end

    def register_worker(klass)
      log.info('server') { "Registered server worker #{klass}" }
      @workers << klass
    end

    def start_workers
      @workers.each do |inst|
        inst.worker_start
      rescue StandardError => e
        log.fatal('server') { ["ERROR in worker #{inst}", e] }
      end
    end

    def stop_workers
      @workers.each do |inst|
        inst.worker_stop
      rescue StandardError => e
        log.fatal('server') { ["ERROR in worker #{inst}", e] }
      end
    end

    def start
      log.info('server') { "Server #{ID} starting" }
      log.info('server') { "Commit: #{Core::Version::ID}" }
      log.info('server') { "Tag: #{Core::Version::TAG}" }

      start_workers
    end

    def stop
      log.info('server') { "Server #{ID} stopping" }

      stop_workers

      log.info('server') { "Server #{ID} stopped" }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
svcbase-0.1.18 lib/svcbase/server.rb
svcbase-0.1.17 lib/svcbase/server.rb
svcbase-0.1.16 lib/svcbase/server.rb