Class: Exa::Instrumentation::BaseSubscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/exa/instrumentation.rb

Overview

Base class for creating event subscribers. Subclasses should implement #subscribe to add subscriptions.

Examples:

class MyCostTracker < Exa::Instrumentation::BaseSubscriber
  def initialize
    @total = 0.0
    super()
  end

  def subscribe
    add_subscription('exa.request.complete') do |_, payload|
      @total += payload.cost_dollars || 0
    end
  end
end

Direct Known Subclasses

CostTracker

Instance Method Summary collapse

Constructor Details

#initializeBaseSubscriber

Returns a new instance of BaseSubscriber.



103
104
105
# File 'lib/exa/instrumentation.rb', line 103

def initialize
  @subscriptions = []
end

Instance Method Details

#subscribeObject

Override to add subscriptions. Called automatically after initialize.

Raises:

  • (NotImplementedError)


108
109
110
# File 'lib/exa/instrumentation.rb', line 108

def subscribe
  raise NotImplementedError, "Subclasses must implement #subscribe"
end

#unsubscribeObject

Unsubscribe from all registered subscriptions.



113
114
115
116
# File 'lib/exa/instrumentation.rb', line 113

def unsubscribe
  @subscriptions.each { |id| Exa.instrumentation.unsubscribe(id) }
  @subscriptions.clear
end