class RubyEventStore::InstrumentedSubscriptions

Attributes

instrumentation[R]
subscriptions[R]

Public Class Methods

new(subscriptions, instrumentation) click to toggle source
# File lib/ruby_event_store/instrumented_subscriptions.rb, line 5
def initialize(subscriptions, instrumentation)
  @subscriptions = subscriptions
  @instrumentation = instrumentation
end

Public Instance Methods

add_global_subscription(subscriber) click to toggle source
# File lib/ruby_event_store/instrumented_subscriptions.rb, line 16
def add_global_subscription(subscriber)
  instrument(subscriber: subscriber) do
    subscriptions.add_global_subscription(subscriber)
  end
end
add_subscription(subscriber, event_types) click to toggle source
# File lib/ruby_event_store/instrumented_subscriptions.rb, line 10
def add_subscription(subscriber, event_types)
  instrument(subscriber: subscriber, event_types: event_types) do
    subscriptions.add_subscription(subscriber, event_types)
  end
end
add_thread_global_subscription(subscriber) click to toggle source
# File lib/ruby_event_store/instrumented_subscriptions.rb, line 28
def add_thread_global_subscription(subscriber)
  instrument(subscriber: subscriber) do
    subscriptions.add_thread_global_subscription(subscriber)
  end
end
add_thread_subscription(subscriber, event_types) click to toggle source
# File lib/ruby_event_store/instrumented_subscriptions.rb, line 22
def add_thread_subscription(subscriber, event_types)
  instrument(subscriber: subscriber, event_types: event_types) do
    subscriptions.add_thread_subscription(subscriber, event_types)
  end
end
method_missing(method_name, *arguments, &block) click to toggle source
Calls superclass method
# File lib/ruby_event_store/instrumented_subscriptions.rb, line 34
def method_missing(method_name, *arguments, &block)
  if respond_to?(method_name)
    subscriptions.public_send(method_name, *arguments, &block)
  else
    super
  end
end
respond_to_missing?(method_name, _include_private) click to toggle source
# File lib/ruby_event_store/instrumented_subscriptions.rb, line 42
def respond_to_missing?(method_name, _include_private)
  subscriptions.respond_to?(method_name)
end

Private Instance Methods

instrument(args) { || ... } click to toggle source
# File lib/ruby_event_store/instrumented_subscriptions.rb, line 48
def instrument(args)
  instrumentation.instrument("add.subscriptions.rails_event_store", args) do
    unsubscribe = yield
    ->() {
      instrumentation.instrument("remove.subscriptions.rails_event_store", args) do
        unsubscribe.call
      end
    }
  end
end