@Benchmark public TraceContext parseBytes() { return TraceContextBinaryFormat.parseBytes(serialized, null); }
@Benchmark public byte[] toBytes() { return TraceContextBinaryFormat.toBytes(context); }
static byte[] toBytes(TraceContext traceContext) { checkNotNull(traceContext, "traceContext"); byte[] bytes = new byte[FORMAT_LENGTH]; bytes[0] = VERSION; bytes[1] = TRACE_ID_FIELD_ID; writeLong(bytes, 2, traceContext.traceIdHigh()); writeLong(bytes, 10, traceContext.traceId()); bytes[18] = SPAN_ID_FIELD_ID; writeLong(bytes, 19, traceContext.spanId()); bytes[27] = TRACE_OPTION_FIELD_ID; if (traceContext.sampled() != null && traceContext.sampled()) { bytes[28] = 1; } return bytes; }
@Override public void inject(TraceContext traceContext, C carrier) { if (carrier instanceof Metadata) { byte[] serialized = TraceContextBinaryFormat.toBytes(traceContext); ((Metadata) carrier).put(GRPC_TRACE_BIN, serialized); Tags tags = traceContext.findExtra(Tags.class); if (tags != null) ((Metadata) carrier).put(GRPC_TAGS_BIN, tags.toMap()); } delegate.inject(traceContext, carrier); } }
@Override public TraceContextOrSamplingFlags extract(C carrier) { Tags tags = null; if (carrier instanceof Metadata) { tags = extractTags(((Metadata) carrier).get(GRPC_TAGS_BIN)); byte[] bytes = ((Metadata) carrier).get(GRPC_TRACE_BIN); if (bytes != null) { TraceContext maybeContext = TraceContextBinaryFormat.parseBytes(bytes, tags); if (maybeContext != null) return TraceContextOrSamplingFlags.create(maybeContext); } } TraceContextOrSamplingFlags result = delegate.extract(carrier); if (tags == null) return result; return result.toBuilder().addExtra(tags).build(); } }
static byte[] toBytes(TraceContext traceContext) { checkNotNull(traceContext, "traceContext"); byte[] bytes = new byte[FORMAT_LENGTH]; bytes[0] = VERSION; bytes[1] = TRACE_ID_FIELD_ID; writeLong(bytes, 2, traceContext.traceIdHigh()); writeLong(bytes, 10, traceContext.traceId()); bytes[18] = SPAN_ID_FIELD_ID; writeLong(bytes, 19, traceContext.spanId()); bytes[27] = TRACE_OPTION_FIELD_ID; if (traceContext.sampled() != null && traceContext.sampled()) { bytes[28] = 1; } return bytes; }
@Override public void inject(TraceContext traceContext, C carrier) { if (carrier instanceof Metadata) { byte[] serialized = TraceContextBinaryFormat.toBytes(traceContext); ((Metadata) carrier).put(GRPC_TRACE_BIN, serialized); Tags tags = traceContext.findExtra(Tags.class); if (tags != null) ((Metadata) carrier).put(GRPC_TAGS_BIN, tags.toMap()); } delegate.inject(traceContext, carrier); } }
@Override public TraceContextOrSamplingFlags extract(C carrier) { Tags tags = null; if (carrier instanceof Metadata) { tags = extractTags(((Metadata) carrier).get(GRPC_TAGS_BIN)); byte[] bytes = ((Metadata) carrier).get(GRPC_TRACE_BIN); if (bytes != null) { TraceContext maybeContext = TraceContextBinaryFormat.parseBytes(bytes, tags); if (maybeContext != null) return TraceContextOrSamplingFlags.create(maybeContext); } } TraceContextOrSamplingFlags result = delegate.extract(carrier); if (tags == null) return result; return result.toBuilder().addExtra(tags).build(); } }