class ReportPortal::EventBus

@api private

Attributes

event_types[R]

Public Class Methods

new() click to toggle source
# File lib/report_portal/event_bus.rb, line 8
def initialize
  @event_types = {
    prepare_start_item_request: Events::PrepareStartItemRequest
  }
  @handlers = {}
end

Public Instance Methods

broadcast(event_name, **attributes) click to toggle source
# File lib/report_portal/event_bus.rb, line 19
def broadcast(event_name, **attributes)
  event = event_types.fetch(event_name).new(**attributes)
  handlers_for(event_name).each { |handler| handler.call(event) }
end
on(event_name, &proc) click to toggle source
# File lib/report_portal/event_bus.rb, line 15
def on(event_name, &proc)
  handlers_for(event_name) << proc
end

Private Instance Methods

handlers_for(event_name) click to toggle source
# File lib/report_portal/event_bus.rb, line 26
def handlers_for(event_name)
  @handlers[event_name] ||= []
end