module Shirka::Eventalk

Public Instance Methods

add_watcher(obj) click to toggle source
# File lib/shirka/eventalk.rb, line 32
def add_watcher(obj)
  @watchers ||= []
  @watchers << obj
end
fire(signal, msg=nil, receivers=nil) click to toggle source
# File lib/shirka/eventalk.rb, line 5
def fire(signal, msg=nil, receivers=nil)
  if receivers.nil?
    receivers = watchers
  else
    receivers = Array(receivers)
  end
  
  receivers.each do |w|
    method = "on_#{signal}".to_sym
    if w.respond_to? method
      e = OpenStruct.new
      e.signal =  signal
      e.msg = msg
      e.sender = self
      w.send method, e
    end
  end
end
forward(event, receivers=nil) click to toggle source
# File lib/shirka/eventalk.rb, line 24
def forward(event, receivers=nil)
  fire event.signal, event.msg, receivers
end
watch(obj) click to toggle source
# File lib/shirka/eventalk.rb, line 37
def watch(obj)
  obj.add_watcher self
end
watchers() click to toggle source
# File lib/shirka/eventalk.rb, line 28
def watchers
  @watchers ||= []
end