Sha256: 2815807968164938d58dba86bdb302310da35adfeb64e1f243f54e22294ddaca

Contents?: true

Size: 803 Bytes

Versions: 1

Compression:

Stored size: 803 Bytes

Contents

require 'maxwell/agent/worker'
require 'maxwell/agent/scheduler'
require 'maxwell/agent/work_schedule'

module Maxwell
  module Agent
    class Runner < Celluloid::SupervisionGroup

      attr_reader :registry

      def self.worker_pool_size
        Agent.configuration.worker_concurrency
      end

      supervise Agent::WorkSchedule, as: :work_schedule
      pool Agent::Worker, as: :worker, size: worker_pool_size
      supervise Agent::Scheduler, as: :scheduler

      def [](actor_name)
        @registry[actor_name]
      end

      def initialize(opts)
        super
        wait_for_actor_boot
      end

      def wait_for_actor_boot
        loop do
          break if self[:work_schedule] &&
            self[:worker] &&
            self[:scheduler]
        end
      end
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
maxwell_agent-0.0.5 lib/maxwell/agent/runner.rb