class ElasticAPM::Transport::Worker

@api private

def initialize(

def initialize(
  config,
  queue,
  serializers:,
  filters:,
  conn_adapter: Connection
)
  @config = config
  @queue = queue
  @stopping = false
  @serializers = serializers
  @filters = filters
  metadata = serializers.serialize(Metadata.new(config))
  @connection = conn_adapter.new(config, metadata)
end

def process(resource)

def process(resource)
  serialized = serializers.serialize(resource)
  @filters.apply!(serialized)
  @connection.write(serialized.to_json)
end

def stop

def stop
  @stopping = true
end

def stopping?

def stopping?
  @stopping
end

def work_forever

rubocop:disable Metrics/MethodLength
def work_forever
  while (msg = queue.pop)
    case msg
    when StopMessage
      stop
    else
      process msg
    end
    next unless stopping?
    debug 'Stopping worker -- %s', self
    @connection.flush
    break
  end
rescue Exception => e
  warn 'Worker died with exception: %s', e.inspect
  debug e.backtrace.join("\n")
end