class Reacto::Subscriptions::ExecutorSubscription

Public Class Methods

new(subscription, executor) click to toggle source
# File lib/reacto/subscriptions/executor_subscription.rb, line 9
def initialize(subscription, executor)
  @executor = executor
  @wrapped = subscription
  @closed = false
end

Public Instance Methods

add(subscription) click to toggle source
# File lib/reacto/subscriptions/executor_subscription.rb, line 27
def add(subscription)
  @wrapped.add(subscription)
end
add_resource(resource) click to toggle source
# File lib/reacto/subscriptions/executor_subscription.rb, line 31
def add_resource(resource)
  @wrapped.add_resource(resource)
end
on_close() click to toggle source
# File lib/reacto/subscriptions/executor_subscription.rb, line 45
def on_close
  return if !subscribed? || @closed

  unsubscribe_subscription = Subscriptions.on_close_and_error do
    @executor.post(&method(:unsubscribe))
    @closed = true
  end
  @wrapped.add(unsubscribe_subscription)

  @executor.post(&@wrapped.method(:on_close))
end
on_error(error) click to toggle source
# File lib/reacto/subscriptions/executor_subscription.rb, line 57
def on_error(error)
  return if !subscribed? || @closed

  unsubscribe_subscription = Subscriptions.on_close_and_error do
    @executor.post(&method(:unsubscribe))
    @closed = true
  end
  @wrapped.add(unsubscribe_subscription)

  @executor.post(error, &@wrapped.method(:on_error))
end
on_open() click to toggle source
# File lib/reacto/subscriptions/executor_subscription.rb, line 35
def on_open
  @executor.post(&@wrapped.method(:on_open))
end
on_value(v) click to toggle source
# File lib/reacto/subscriptions/executor_subscription.rb, line 39
def on_value(v)
  return if !subscribed? || @closed

  @executor.post(v, &@wrapped.method(:on_value))
end
subscribed?() click to toggle source
# File lib/reacto/subscriptions/executor_subscription.rb, line 15
def subscribed?
  unsubscribe unless @wrapped.subscribed?

  @executor.running?
end
unsubscribe() click to toggle source
# File lib/reacto/subscriptions/executor_subscription.rb, line 21
def unsubscribe
  @wrapped.unsubscribe

  @executor.post(&@executor.method(:shutdown))
end