Class: Multiplayer::Utils::IdGenerator
- Inherits:
-
Object
- Object
- Multiplayer::Utils::IdGenerator
- Includes:
- OpenTelemetry::Trace
- Defined in:
- lib/multiplayer/utils/id_generator.rb
Constant Summary collapse
- SHARED_CHAR_CODES_ARRAY =
Array.new(32)
Instance Attribute Summary collapse
-
#debug_session_short_id ⇒ Object
Returns the value of attribute debug_session_short_id.
-
#id_generator ⇒ Object
Returns the value of attribute id_generator.
-
#sampler ⇒ Object
Returns the value of attribute sampler.
Class Method Summary collapse
Instance Method Summary collapse
- #generate_trace_id ⇒ Object
-
#initialize(auto_doc_traces_ratio = 0) ⇒ IdGenerator
constructor
A new instance of IdGenerator.
Constructor Details
#initialize(auto_doc_traces_ratio = 0) ⇒ IdGenerator
11 12 13 14 15 |
# File 'lib/multiplayer/utils/id_generator.rb', line 11 def initialize(auto_doc_traces_ratio = 0) @debug_session_short_id = nil @id_generator = IdGenerator.get_id_generator(16) @sampler = TraceIdRatioBasedSampler.new(auto_doc_traces_ratio) end |
Instance Attribute Details
#debug_session_short_id ⇒ Object
Returns the value of attribute debug_session_short_id.
7 8 9 |
# File 'lib/multiplayer/utils/id_generator.rb', line 7 def debug_session_short_id @debug_session_short_id end |
#id_generator ⇒ Object
Returns the value of attribute id_generator.
7 8 9 |
# File 'lib/multiplayer/utils/id_generator.rb', line 7 def id_generator @id_generator end |
#sampler ⇒ Object
Returns the value of attribute sampler.
7 8 9 |
# File 'lib/multiplayer/utils/id_generator.rb', line 7 def sampler @sampler end |
Class Method Details
.get_id_generator(bytes) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/multiplayer/utils/id_generator.rb', line 28 def self.get_id_generator(bytes) lambda do (0...(bytes * 2)).each do |i| SHARED_CHAR_CODES_ARRAY[i] = rand(16) + 48 # valid hex characters in the range 48-57 and 97-102 if SHARED_CHAR_CODES_ARRAY[i] >= 58 SHARED_CHAR_CODES_ARRAY[i] += 39 end end SHARED_CHAR_CODES_ARRAY[0...(bytes * 2)].map(&:chr).join end end |
Instance Method Details
#generate_trace_id ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/multiplayer/utils/id_generator.rb', line 17 def generate_trace_id trace_id = @id_generator.call if @debug_session_short_id prefix = "#{MULTIPLAYER_TRACE_DEBUG_PREFIX}#{@debug_session_short_id}" trace_id = "#{prefix}#{trace_id[prefix.length..-1]}" elsif @sampler.is_mp_trace_id?(trace_id) trace_id = "#{MULTIPLAYER_TRACE_DOC_PREFIX}#{trace_id[MULTIPLAYER_TRACE_DOC_PREFIX.length..-1]}" end [ trace_id ].pack("H*") end |