Module: Hibiki::Trackable
Overview
---- shared subscription behaviour -----------------------------------------
Instance Method Summary collapse
- #notify ⇒ Object
-
#register_dependency ⇒ Object
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.
- #subscribers ⇒ Object
- #unsubscribe(observer) ⇒ Object
Instance Method Details
#notify ⇒ Object
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_dependency ⇒ Object
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 |
#subscribers ⇒ Object
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) |