class Reacto::Subscriptions::TrackerSubscription

Public Class Methods

new(notification_tracker, trackable) click to toggle source
# File lib/reacto/subscriptions/tracker_subscription.rb, line 8
def initialize(notification_tracker, trackable)
  @notification_tracker = notification_tracker
  @trackable = trackable

  @subscribed = true
  @subscriptions = []
  @resources = []
end

Public Instance Methods

add(subscription) click to toggle source
# File lib/reacto/subscriptions/tracker_subscription.rb, line 38
def add(subscription)
  @subscriptions << subscription
end
add_resource(resource) click to toggle source
# File lib/reacto/subscriptions/tracker_subscription.rb, line 34
def add_resource(resource)
  @resources << resource
end
on_close() click to toggle source
# File lib/reacto/subscriptions/tracker_subscription.rb, line 64
def on_close
  return unless subscribed?

  @notification_tracker.on_close
  @subscriptions.each(&:on_close)
  unsubscribe
end
on_error(e) click to toggle source
# File lib/reacto/subscriptions/tracker_subscription.rb, line 56
def on_error(e)
  return unless subscribed?

  @notification_tracker.on_error(e)
  @subscriptions.each { |s| s.on_error(e) }
  unsubscribe
end
on_open() click to toggle source
# File lib/reacto/subscriptions/tracker_subscription.rb, line 42
def on_open
  return unless subscribed?

  @notification_tracker.on_open
  @subscriptions.each(&:on_open)
end
on_value(v) click to toggle source
# File lib/reacto/subscriptions/tracker_subscription.rb, line 49
def on_value(v)
  return unless subscribed?

  @notification_tracker.on_value(v)
  @subscriptions.each { |s| s.on_value(v) }
end
subscribed?() click to toggle source
# File lib/reacto/subscriptions/tracker_subscription.rb, line 17
def subscribed?
  @subscribed
end
unsubscribe() click to toggle source
# File lib/reacto/subscriptions/tracker_subscription.rb, line 21
def unsubscribe
  @subscriptions.each(&:unsubscribe)
  return unless subscribed?

  @trackable.off(@notification_tracker)

  @trackable = nil
  @notification_tracker = nil
  @subscribed = false
  @resources.each(&:cleanup)
  @resources = []
end