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