require 'sqreen/ecosystem/module_api' require 'sqreen/ecosystem/module_api/event_listener' require 'sqreen/ecosystem/module_api/signal_producer' require 'sqreen/ecosystem/module_api/tracing_push_down' require 'sqreen/ecosystem/tracing/signals/tracing_server' module Sqreen module Ecosystem module Http class RackRequest include ModuleApi::EventListener include ModuleApi::TracingPushDown include ModuleApi::SignalProducer def setup on_request_start(&method(:handle_request)) end private def handle_request(rack_request) return unless should_sample?('server') trace_id = rack_request.env[ModuleApi::TRACE_ID_ENV_KEY] signal = Tracing::Signals::TracingServer.new signal.payload = Tracing::Signals::TracingServer::Payload.new( transport: 'http', client_ip: rack_request.ip, tracing_identifier: trace_id ) submit_signal signal end end end end end