lib/rocketman.rb in rocketman-0.1.0 vs lib/rocketman.rb in rocketman-0.1.1

- old
+ new

@@ -1,85 +1,6 @@ -require 'set' -require 'singleton' -require 'pry' - -module Rocketman - class Registry - include Singleton - - def initialize - @registry = {} - end - - def register_event(event) - if @registry[event] - return @registry[event] - else - @registry[event] = {} - end - end - - def register_consumer(event, consumer, action) - @registry[event][consumer] = action - end - - def get_consumers_for(event) - @registry[event] - end - - def event_exists?(event) - !@registry[event].nil? - end - end - - class Event - def initialize(event, payload) - @event = event - @payload = payload - @test = payload.fetch(:test, false) - Rocketman::Registry.instance.register_event(event) - end - - def notify_consumers - consumers = Rocketman::Registry.instance.get_consumers_for(@event) - - threads = consumers.reduce([]) do |memo, (consumer, action)| - memo << Thread.new { consumer.instance_exec(@payload, &action) } - end - - threads.each { |t| t.join } if @test == true - end - end - - module Producer - def self.included(base) - base.include(InstanceMethods) - end - - module InstanceMethods - def emit(event, **payload) - event = Rocketman::Event.new(event, payload) - event.notify_consumers - end - end - end - - module Consumer - def self.included(base) - base.extend(InstanceMethods) - end - - module InstanceMethods - def on_event(event, &action) - consumer = self - Rocketman::Registry.instance.register_event(event) - register_consumer(event, consumer, action) - end - - private - - def register_consumer(event, consumer, action) - Rocketman::Registry.instance.register_consumer(event, consumer, action) - end - end - end -end +require 'rocketman/config.rb' +require 'rocketman/pool.rb' +require 'rocketman/registry.rb' +require 'rocketman/event.rb' +require 'rocketman/producer.rb' +require 'rocketman/consumer.rb'