class Sqreen::EcosystemIntegration
This class is the interface through which the agent interacts with the ecosystem.
Other classes in the EcosystemIntegration
module implement the functionality that the ecosystem requires in order to deliver data to the agent and to be informed by the agent of certain key events (see Sqreen::Ecosystem::DispatchTable
).
Public Class Methods
new(framework, queue)
click to toggle source
@param [Sqreen::Framework] framework
# File lib/sqreen/ecosystem_integration.rb, line 25 def initialize(framework, queue) @framework = framework @queue = queue @request_lifecycle = RequestLifecycleTracking.new @online = false end
Public Instance Methods
disable()
click to toggle source
# File lib/sqreen/ecosystem_integration.rb, line 45 def disable raise NotImplementedYet end
handle_tracing_command(trace_id_prefix, scopes_config)
click to toggle source
# File lib/sqreen/ecosystem_integration.rb, line 62 def handle_tracing_command(trace_id_prefix, scopes_config) return unless @online Ecosystem.configure_sampling(trace_id_prefix, scopes_config) end
init()
click to toggle source
# File lib/sqreen/ecosystem_integration.rb, line 32 def init raise 'already initialized' if @online setup_dispatch_table Ecosystem.init logger.info 'Ecosystem successfully initialized' @online = true rescue ::Exception => e # rubocop:disable Lint/RescueException logger.warn { "Error initializing Ecosystem: #{e.message}" } logger.debug { e.backtrace.map { |x| " #{x}" }.join("\n") } Sqreen::RemoteException.record(e) end
request_end()
click to toggle source
# File lib/sqreen/ecosystem_integration.rb, line 56 def request_end return unless @online Ecosystem.end_transaction end
request_start(rack_request)
click to toggle source
# File lib/sqreen/ecosystem_integration.rb, line 49 def request_start(rack_request) return unless @online Ecosystem.start_transaction @request_lifecycle.notify_request_start(rack_request) end
Private Instance Methods
create_signal_consumption()
click to toggle source
# File lib/sqreen/ecosystem_integration.rb, line 82 def create_signal_consumption SignalConsumption.new(@framework, @request_lifecycle, @queue) end
setup_dispatch_table()
click to toggle source
# File lib/sqreen/ecosystem_integration.rb, line 70 def setup_dispatch_table Ecosystem::DispatchTable.consume_signal = create_signal_consumption.method(:consume_signal) Ecosystem::DispatchTable.add_request_start_listener = @request_lifecycle.method(:add_start_observer) Ecosystem::DispatchTable.fetch_logger = lambda { logger } Ecosystem::DispatchTable.instrument = InstrumentationService.method(:instrument) end