-
Notifications
You must be signed in to change notification settings - Fork 242
/
link.rb
46 lines (39 loc) · 1.48 KB
/
link.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# frozen_string_literal: true
# Copyright The OpenTelemetry Authors
#
# SPDX-License-Identifier: Apache-2.0
module OpenTelemetry
module Trace
# A link to a {Span}. Used (for example) in batching operations, where a
# single batch handler processes multiple requests from different traces.
# A Link can be also used to reference spans from the same trace. A Link
# and its attributes are immutable.
class Link
EMPTY_ATTRIBUTES = {}.freeze
private_constant :EMPTY_ATTRIBUTES
# Returns the {SpanContext} for this link
#
# @return [SpanContext]
attr_reader :span_context
# Returns the frozen attributes for this link.
#
# @return [Hash{String => String, Numeric, Boolean, Array<String, Numeric, Boolean>}]
attr_reader :attributes
# Returns a new immutable {Link}.
#
# @param [SpanContext] span_context The context of the linked {Span}.
# @param [optional Hash{String => String, Numeric, Boolean, Array<String, Numeric, Boolean>}]
# attributes A hash of attributes for this link. Attributes will be
# frozen during Link initialization.
# @return [Link]
def initialize(span_context, attributes = nil)
@span_context = span_context
@attributes = attributes.freeze || EMPTY_ATTRIBUTES
end
# Returns true if two {Link}s are equal.
def ==(other)
other.span_context == @span_context && other.attributes == @attributes
end
end
end
end