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
- .base16_hex_id_to_uint64(id) ⇒ Object
- .generate ⇒ Object
-
.to_hex(id) ⇒ Object
Convert an integer id into a 0 padded hex string.
-
.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.
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 |
.generate ⇒ Object
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 |