summaryrefslogtreecommitdiff
path: root/lib/killjoy/worker.rb
blob: 0f16dac12713ecefd9a1df71ff3c9d5c13b4636f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
module Killjoy
  module Worker
    def initialize
      @mutex = ServerEngine::BlockingFlag.new
      @message_bus = Killjoy::MessageBus.new(config)
    end

    def run
      after_fork

      writers = Spank::IOC.resolve_all(:writer)

      config[:queue_shards].times do |shard|
        @message_bus.subscribe(Killjoy::Consumer.new(writers, shard))
      end
      @mutex.wait
      #until @mutex.wait_for_set(config[:heartbeat])
        #Killjoy.logger.debug("Heartbeat: [#{Thread.current.object_id}]")
      #end
    end

    def stop
      @message_bus.stop
      @mutex.set!
    end

    private

    def after_fork
      Killjoy::AfterFork.new.call
    end
  end
end