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