Module: Jaeger::TraceId

Defined in:
lib/jaeger/trace_id.rb

Constant Summary collapse

MAX_64BIT_SIGNED_INT =
(1 << 63) - 1
MAX_64BIT_UNSIGNED_INT =
(1 << 64) - 1
TRACE_ID_UPPER_BOUND =
MAX_64BIT_UNSIGNED_INT + 1

Class Method Summary collapse

Class Method Details

.base16_hex_id_to_uint64(id) ⇒ Object



13
14
15
16
17
# File 'lib/jaeger/trace_id.rb', line 13

def self.base16_hex_id_to_uint64(id)
  return nil unless id
  value = id.to_i(16)
  value > MAX_64BIT_UNSIGNED_INT || value < 0 ? 0 : value
end

.generateObject



9
10
11
# File 'lib/jaeger/trace_id.rb', line 9

def self.generate
  rand(TRACE_ID_UPPER_BOUND)
end

.to_hex(id) ⇒ Object

Convert an integer id into a 0 padded hex string. If the string is shorter than 16 characters, it will be padded to 16. If it is longer than 16 characters, it is padded to 32.



28
29
30
31
32
33
34
35
36
37
# File 'lib/jaeger/trace_id.rb', line 28

def self.to_hex(id)
  hex_str = id.to_s(16)

  # pad the string with '0's to 16 or 32 characters
  if hex_str.length > 16
    hex_str.rjust(32, '0')
  else
    hex_str.rjust(16, '0')
  end
end

.uint64_id_to_int64(id) ⇒ Object

Thrift defines ID fields as i64, which is signed, therefore we convert large IDs (> 2^63) to negative longs



21
22
23
# File 'lib/jaeger/trace_id.rb', line 21

def self.uint64_id_to_int64(id)
  id > MAX_64BIT_SIGNED_INT ? id - MAX_64BIT_UNSIGNED_INT - 1 : id
end