Sha256: 61cbcb662dbfadd8fe74cd5626fa952f569aeadab15dcab9a9df2da305fce701

Contents?: true

Size: 1.83 KB

Versions: 1

Compression:

Stored size: 1.83 KB

Contents

module Qs

  class DaemonData

    # The daemon uses this to "compile" its configuration for speed. NsOptions
    # is relatively slow everytime an option is read. To avoid this, we read the
    # options one time here and memoize their values. This way, we don't pay the
    # NsOptions overhead when reading them while handling a message.

    attr_reader :name, :process_label
    attr_reader :pid_file
    attr_reader :min_workers, :max_workers
    attr_reader :worker_start_procs, :worker_shutdown_procs
    attr_reader :worker_sleep_procs, :worker_wakeup_procs
    attr_reader :logger, :verbose_logging
    attr_reader :shutdown_timeout
    attr_reader :error_procs
    attr_reader :queue_redis_keys, :routes

    def initialize(args = nil)
      args ||= {}
      @name                  = args[:name]
      @process_label         = args[:process_label]
      @pid_file              = args[:pid_file]
      @min_workers           = args[:min_workers]
      @max_workers           = args[:max_workers]
      @worker_start_procs    = args[:worker_start_procs]
      @worker_shutdown_procs = args[:worker_shutdown_procs]
      @worker_sleep_procs    = args[:worker_sleep_procs]
      @worker_wakeup_procs   = args[:worker_wakeup_procs]
      @logger                = args[:logger]
      @verbose_logging       = !!args[:verbose_logging]
      @shutdown_timeout      = args[:shutdown_timeout]
      @error_procs           = args[:error_procs] || []
      @queue_redis_keys      = args[:queue_redis_keys] || []
      @routes                = build_routes(args[:routes] || [])
    end

    def route_for(route_id)
      @routes[route_id] || raise(NotFoundError, "unknown message '#{route_id}'")
    end

    private

    def build_routes(routes)
      routes.inject({}){ |h, route| h.merge(route.id => route) }
    end

  end

  NotFoundError = Class.new(RuntimeError)

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
qs-0.5.0 lib/qs/daemon_data.rb