Sha256: 0d2343173202ec727720151fbfea31cb01801581212989480a607775d1b7df0e

Contents?: true

Size: 1.91 KB

Versions: 2

Compression:

Stored size: 1.91 KB

Contents

module Zipkin
  class Span
    attr_accessor :operation_name

    attr_reader :context, :start_time, :tags, :logs

    # Creates a new {Span}
    #
    # @param context [SpanContext] the context of the span
    # @param operation_name [String] the operation name
    # @param collector [Collector] the span collector
    #
    # @return [Span] a new Span
    def initialize(context, operation_name, collector, start_time: Time.now, tags: {})
      @context = context
      @operation_name = operation_name
      @collector = collector
      @start_time = start_time
      @tags = tags
      @logs = []
    end

    # Set a tag value on this span
    #
    # @param key [String] the key of the tag
    # @param value [String, Numeric, Boolean] the value of the tag. If it's not
    # a String, Numeric, or Boolean it will be encoded with to_s
    def set_tag(key, value)
      @tags = @tags.merge(key => value)
    end

    # Set a baggage item on the span
    #
    # @param key [String] the key of the baggage item
    # @param value [String] the value of the baggage item
    def set_baggage_item(key, value)
      self
    end

    # Get a baggage item
    #
    # @param key [String] the key of the baggage item
    #
    # @return Value of the baggage item
    def get_baggage_item(key)
      nil
    end

    # Add a log entry to this span
    #
    # @deprecated Use {#log_kv} instead.
    def log(*args)
      warn 'Span#log is deprecated. Please use Span#log_kv instead.'
      log_kv(*args)
    end

    # Add a log entry to this span
    #
    # @param timestamp [Time] time of the log
    # @param fields [Hash] Additional information to log
    def log_kv(timestamp: Time.now, **fields)
      @logs << fields.merge(timestamp: timestamp)
      nil
    end

    # Finish the {Span}
    #
    # @param end_time [Time] custom end time, if not now
    def finish(end_time: Time.now)
      @collector.send_span(self, end_time)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
zipkin-1.3.0 lib/zipkin/span.rb
zipkin-1.2.0 lib/zipkin/span.rb