Sha256: e135852f8d98b1b7f3b3a023424a21c49d6fd933412d2f8d9a30b293b57248c5
Contents?: true
Size: 1.8 KB
Versions: 2
Compression:
Stored size: 1.8 KB
Contents
# frozen_string_literal: true module Datadog class Statsd module Serialization class EventSerializer EVENT_BASIC_OPTIONS = { date_happened: 'd:', hostname: 'h:', aggregation_key: 'k:', priority: 'p:', source_type_name: 's:', alert_type: 't:', }.freeze def initialize(global_tags: []) @tag_serializer = TagSerializer.new(global_tags) end def format(title, text, options = EMPTY_OPTIONS) title = escape(title) text = escape(text) String.new.tap do |event| event << '_e{' event << title.bytesize.to_s event << ',' event << text.bytesize.to_s event << '}:' event << title event << '|' event << text # we are serializing the generic service check options # before serializing specialized options that need edge-cases EVENT_BASIC_OPTIONS.each do |option_key, shortcut| if value = options[option_key] event << '|' event << shortcut event << value.to_s.delete('|') end end # also returns the global tags from serializer if tags = tag_serializer.format(options[:tags]) event << '|#' event << tags end if event.bytesize > MAX_EVENT_SIZE raise "Event #{title} payload is too big (more that 8KB), event discarded" end end end protected attr_reader :tag_serializer def escape(text) text.delete('|').tap do |t| t.gsub!("\n", '\n') end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dogstatsd-ruby-4.8.2 | lib/datadog/statsd/serialization/event_serializer.rb |
dogstatsd-ruby-4.8.1 | lib/datadog/statsd/serialization/event_serializer.rb |