module ObservableRoles::Subscriber
Public Class Methods
included(base)
click to toggle source
# File lib/observable_roles.rb, line 14 def self.included(base) attr_accessor :subscriber_lock attr_reader :captured_observable_events base.extend(ClassMethods) end
Public Instance Methods
capture_observable_event(role, event_name, data={})
click to toggle source
# File lib/observable_roles.rb, line 20 def capture_observable_event(role, event_name, data={}) return if role.nil? || event_name.nil? role = role.to_sym event_name = event_name.to_sym if self.class.get_observed_publisher_callbacks.nil? || self.class.get_observed_publisher_callbacks[role].nil? || self.class.get_observed_publisher_callbacks[role][event_name].nil? return end @captured_observable_events ||= [] @captured_observable_events.push({ callback: self.class.get_observed_publisher_callbacks[role][event_name], data: data }) release_captured_events unless @subscriber_lock end
Private Instance Methods
release_captured_events()
click to toggle source
# File lib/observable_roles.rb, line 36 def release_captured_events @subscriber_lock = true while !@captured_observable_events.empty? e = @captured_observable_events.shift e[:callback].call(self, e[:data]) end @subscriber_lock = false end