Class: Observed::EventBus

Inherits:
Object
  • Object
show all
Defined in:
lib/observed/event_bus.rb

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ EventBus

Returns a new instance of EventBus.



6
7
8
9
10
11
# File 'lib/observed/event_bus.rb', line 6

def initialize(args={})
  @bus = Observed::BasicEventBus.new
  @receives = {}
  @task_factory = args[:task_factory] || fail("The parameter :task_factory is missing in args(#{args}")
  @mutex = ::Mutex.new
end

Instance Method Details

#emit(tag, *params) ⇒ Object



12
13
14
15
16
17
# File 'lib/observed/event_bus.rb', line 12

def emit(tag, *params)
  @task_factory.task { |*params|
    @bus.emit tag, *params
    params
  }
end

#receive(pattern) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/observed/event_bus.rb', line 18

def receive(pattern)
  task = @task_factory.mutable_task {|data, options|
    [data, options]
  }
  @bus.on_receive(pattern) do |*params|
    task.now(*params)
  end
  task
end