Files
i-mic-fps/lib/publisher.rb
2020-12-02 17:37:48 -06:00

44 lines
1.0 KiB
Ruby

# frozen_string_literal: true
class IMICFPS
class Publisher
def self.subscribe(subscription)
raise "Expected IMICFPS::Subscription not #{subscription.class}" unless subscription.is_a?(IMICFPS::Subscription)
Publisher.instance.add_sub(subscription)
end
def self.unsubscribe(subscription)
end
def self.instance
@@instance
end
def initialize
@@instance = self
EventHandler.initiate
Component.initiate
@events = {}
end
def add_sub(subscription)
raise "Expected IMICFPS::Subscription not #{subscription.class}" unless subscription.is_a?(IMICFPS::Subscription)
@events[subscription.event] ||= []
@events[subscription.event] << subscription
end
def publish(event, context, *args)
if subscribers = @events[event]
return unless event_handler = EventHandler.get(event)
subscribers.each do |subscriber|
event_handler.handle(subscriber, context, args)
end
end
end
end
end