class EvilEvents::Core::Events::Notifier::Worker

@api private @since 0.3.0

Constants

EXCEPTION_POLICY

@api public @since 0.3.0

IGNORANCE_POLICY

@api public @since 0.3.0

MAIN_THREAD_POLICY

@api public @since 0.3.0

Attributes

executor[R]

@return [EvilEvents::Core::Events::Notifier::Worker::Executor]

@api private @since 0.3.0

Public Class Methods

new(min_threads:, max_threads:, max_queue:, fallback_policy: MAIN_THREAD_POLICY) click to toggle source

@option min_threads [Integer] @option max_threads [Integer] @option max_queue [Integer] @option fallback_policy [Symbol]

@see EvilEvents::Core::Events::Notifier::Worker::Executor

@api private @since 0.3.0

# File lib/evil_events/core/events/notifier/worker.rb, line 40
def initialize(min_threads:, max_threads:, max_queue:, fallback_policy: MAIN_THREAD_POLICY)
  @executor = Executor.new(
    min_threads:     min_threads,
    max_threads:     max_threads,
    max_queue:       max_queue,
    fallback_policy: fallback_policy
  )
end

Public Instance Methods

notify(manager, event) click to toggle source

@param manager [EvilEvents::Core::Events::Manager] @param event [EvilEvents::Core::Events::AbstractEvent]

@api private @since 0.3.0

# File lib/evil_events/core/events/notifier/worker.rb, line 54
def notify(manager, event)
  event.__call_before_hooks__
  manager.subscribers.each { |subscriber| schedule_job(event, subscriber) }
  event.__call_after_hooks__
end

Private Instance Methods

schedule_job(event, subscriber) click to toggle source

@param event [EvilEvents::Core::Events::AbstractEvent] @param subscriber [EvilEvents::Core::Events::Subscriber]

@api private @since 0.3.0

# File lib/evil_events/core/events/notifier/worker.rb, line 67
def schedule_job(event, subscriber)
  executor.execute(Job.new(event, subscriber))
end