Module: Hibiki::Trackable

Included in:
Derived, State
Defined in:
lib/hibiki/tracking.rb

Overview

---- shared subscription behaviour -----------------------------------------

Instance Method Summary collapse

Instance Method Details

#notifyObject



73
74
75
76
# File 'lib/hibiki/tracking.rb', line 73

def notify
  # dup: invalidation may mutate the set while we iterate
  subscribers.dup.each(&:invalidate)
end

#register_dependencyObject

Called on every read: if someone reactive is currently computing, they now depend on us — record both directions of the edge, so the observer can sever it before its next rerun.



63
64
65
66
67
68
69
# File 'lib/hibiki/tracking.rb', line 63

def register_dependency
  observer = Hibiki.current_observer
  return unless observer

  subscribers << observer
  observer.add_source(self)
end

#subscribersObject



58
# File 'lib/hibiki/tracking.rb', line 58

def subscribers = (@subscribers ||= Set.new)

#unsubscribe(observer) ⇒ Object



71
# File 'lib/hibiki/tracking.rb', line 71

def unsubscribe(observer) = subscribers.delete(observer)