tracing.py (1358B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\eveProto\tracing.py 2 from __future__ import absolute_import 3 import binascii 4 import logging 5 import six 6 logger = logging.getLogger(__name__) 7 8 def bytes_to_hex(id_bytes): 9 return six.ensure_str(binascii.b2a_hex(id_bytes)) 10 11 12 def hex_to_bytes(id_hex): 13 return binascii.a2b_hex(id_hex) 14 15 16 def propagate_trace(protobuf_message, trace_id, parent_span_id, sampled, sample_rate): 17 if trace_id is not None: 18 protobuf_message.trace_context.trace_id = hex_to_bytes(trace_id) 19 protobuf_message.trace_context.parent_id = hex_to_bytes(parent_span_id) 20 protobuf_message.trace_context.flags.sampled = sampled 21 protobuf_message.trace_context.state.sample_rate = sample_rate 22 23 24 def extract_trace_context(protobuf_message): 25 trace_id = bytes_to_hex(protobuf_message.trace_context.trace_id) if protobuf_message.trace_context.trace_id else None 26 parent_span_id = bytes_to_hex(protobuf_message.trace_context.parent_id) if protobuf_message.trace_context.parent_id else None 27 sampled = protobuf_message.trace_context.flags.sampled if trace_id is not None else None 28 sample_rate = protobuf_message.trace_context.state.sample_rate 29 if sample_rate == 0: 30 sample_rate = 1 31 return (trace_id, 32 parent_span_id, 33 sampled, 34 sample_rate)