Sha256: 455ca377fb4c6616f8ab48a59c29227ab40488ee901d14dad7c14c68dbf83592

Contents?: true

Size: 1.52 KB

Versions: 24

Compression:

Stored size: 1.52 KB

Contents

require 'json'
require 'msgpack'

module Datadog
  module Core
    # Encoding module that encodes data for the AgentTransport
    module Encoding
      # Encoder interface that provides the logic to encode traces and service
      # @abstract
      module Encoder
        def content_type
          raise NotImplementedError
        end

        # Concatenates a list of elements previously encoded by +#encode+.
        def join(encoded_elements)
          raise NotImplementedError
        end

        # Serializes a single trace into a String suitable for network transmission.
        def encode(_)
          raise NotImplementedError
        end
      end

      # Encoder for the JSON format
      module JSONEncoder
        extend Encoder

        CONTENT_TYPE = 'application/json'.freeze

        module_function

        def content_type
          CONTENT_TYPE
        end

        def encode(obj)
          JSON.dump(obj)
        end

        def join(encoded_data)
          "[#{encoded_data.join(',')}]"
        end
      end

      # Encoder for the Msgpack format
      module MsgpackEncoder
        extend Encoder

        module_function

        CONTENT_TYPE = 'application/msgpack'.freeze

        def content_type
          CONTENT_TYPE
        end

        def encode(obj)
          MessagePack.pack(obj)
        end

        def join(encoded_data)
          packer = MessagePack::Packer.new
          packer.write_array_header(encoded_data.size)

          (packer.buffer.to_a + encoded_data).join
        end
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
ddtrace-1.23.3 lib/datadog/core/encoding.rb
ddtrace-1.23.2 lib/datadog/core/encoding.rb
ddtrace-1.23.1 lib/datadog/core/encoding.rb
ddtrace-1.22.0 lib/datadog/core/encoding.rb
ddtrace-1.21.1 lib/datadog/core/encoding.rb
ddtrace-1.21.0 lib/datadog/core/encoding.rb
ddtrace-1.20.0 lib/datadog/core/encoding.rb
ddtrace-1.19.0 lib/datadog/core/encoding.rb
ddtrace-1.18.0 lib/datadog/core/encoding.rb
ddtrace-1.17.0 lib/datadog/core/encoding.rb
ddtrace-1.16.2 lib/datadog/core/encoding.rb
ddtrace-1.16.1 lib/datadog/core/encoding.rb
ddtrace-1.16.0 lib/datadog/core/encoding.rb
ddtrace-1.15.0 lib/datadog/core/encoding.rb
ddtrace-1.14.0 lib/datadog/core/encoding.rb
ddtrace-1.13.1 lib/datadog/core/encoding.rb
ddtrace-1.13.0 lib/datadog/core/encoding.rb
ddtrace-1.12.1 lib/datadog/core/encoding.rb
ddtrace-1.12.0 lib/datadog/core/encoding.rb
ddtrace-1.11.1 lib/datadog/core/encoding.rb