class Reacto::Subscriptions::CompositeSubscription

Public Class Methods

new(combinator, subscriber) click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 10
def initialize(combinator, subscriber)
  @combinator = combinator
  @subscriptions = []
  @subscriber = subscriber
end

Public Instance Methods

add(_) click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 25
def add(_)
end
add_resource(_) click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 28
def add_resource(_)
end
after_on_value(_) click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 56
def after_on_value(_)
  #nothing by default
end
closed?() click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 67
def closed?
  @subscriptions.all? { |s| s.closed? }
end
on_close() click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 71
def on_close
  return unless subscribed?
  return if @subscriptions.any? { |s| !s.closed? }

  @subscriber.on_close
  unsubscribe
end
on_error(e) click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 60
def on_error(e)
  # Introduce a multi-error and not call on_error right away when there is
  # an error and an option is set?
  return unless subscribed?
  @subscriber.on_error(e)
end
on_open() click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 31
def on_open
  return unless subscribed?
  return unless @subscriptions.any? { |s| !s.active? }
  @subscriber.on_open
end
on_value(val) click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 41
def on_value(val)
  return unless subscribed?
  return if waiting?


  on_value_subscriptions(val)
  after_on_value(val)
end
on_value_subscriptions(_) click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 50
def on_value_subscriptions(_)
  @subscriber.on_value(
    @combinator.call(*@subscriptions.map(&:last_value))
  )
end
subscribed?() click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 16
def subscribed?
  @subscriptions.any? { |s| s.subscribed? }
end
subscription!() click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 79
def subscription!
  subscription = InnerSubscription.new(self)
  @subscriptions << subscription

  subscription
end
unsubscribe() click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 20
def unsubscribe
  @subscriptions.each(&:unsubscribe)
  @subscriptions = []
end
waiting?() click to toggle source
# File lib/reacto/subscriptions/composite_subscription.rb, line 37
def waiting?
  @subscriptions.map(&:last_value).any? { |v| v == NO_VALUE }
end