class Support::Events::DomainEventPublisher

Attributes

subscribers[R]

Public Class Methods

cancel_subscription(subscriber) click to toggle source
# File lib/hecks/domain/templates/lib/support/events/domain_event_publisher.rb, line 18
def self.cancel_subscription(subscriber)
  instance.subscribers.delete(subscriber)
end
emit(command, &block) click to toggle source
# File lib/hecks/domain/templates/lib/support/events/domain_event_publisher.rb, line 10
def self.emit(command, &block)
  instance.emit(DomainEvent.new(command), &block)
end
new() click to toggle source
# File lib/hecks/domain/templates/lib/support/events/domain_event_publisher.rb, line 6
def initialize
  @subscribers = []
end
subscribe(subscriber) click to toggle source
# File lib/hecks/domain/templates/lib/support/events/domain_event_publisher.rb, line 14
def self.subscribe(subscriber)
  instance.subscribers << subscriber
end

Public Instance Methods

emit(domain_event) { |domain_event| ... } click to toggle source
# File lib/hecks/domain/templates/lib/support/events/domain_event_publisher.rb, line 22
def emit(domain_event, &block)
  yield domain_event if block
  @subscribers.each do |subscriber|
    next unless subscriber.domain_event == '*' ||
                subscriber.domain_event == domain_event.type

    subscriber.notify(domain_event)
  end
end