# encoding: utf-8

require 'rcs-common/heartbeat'
require 'rcs-common/path_utils'

require_release 'rcs-db/db_layer'
require_release 'rcs-db/firewall'

require_relative 'instance_worker_mng'

module RCS
  module Worker
    class HeartBeat < RCS::HeartBeat::Base
      component :worker

      def firewall_check
        return if RCS::DB::Firewall.ok?
        trace(:fatal, "#{RCS::DB::Firewall.error_message}. Quitting...")
        exit!(1)
      end

      def perform
        firewall_check

        active_threads = InstanceWorkerMng.worker_threads_count

        InstanceWorkerMng.remove_dead_worker_threads

        message = active_threads > 0 ? "Processing evidence from #{active_threads} agents" : "Idle"
        return [OK, message]
      end
    end
  end
end
