private long spanIdToLong(final @Nullable SpanId spanId) { if (spanId == null) { return 0L; } // Attempt to minimise allocations, since SpanId#getBytes currently creates a defensive copy: spanId.copyBytesTo(spanIdBuffer, 0); return Longs.fromByteArray(spanIdBuffer); }
@Override public byte[] toByteArray(SpanContext spanContext) { checkNotNull(spanContext, "spanContext"); byte[] bytes = new byte[ALL_FORMAT_LENGTH]; bytes[VERSION_ID_OFFSET] = VERSION_ID; bytes[TRACE_ID_FIELD_ID_OFFSET] = TRACE_ID_FIELD_ID; spanContext.getTraceId().copyBytesTo(bytes, TRACE_ID_OFFSET); bytes[SPAN_ID_FIELD_ID_OFFSET] = SPAN_ID_FIELD_ID; spanContext.getSpanId().copyBytesTo(bytes, SPAN_ID_OFFSET); bytes[TRACE_OPTION_FIELD_ID_OFFSET] = TRACE_OPTION_FIELD_ID; spanContext.getTraceOptions().copyBytesTo(bytes, TRACE_OPTIONS_OFFSET); return bytes; }
@Override public byte[] toByteArray(SpanContext spanContext) { checkNotNull(spanContext, "spanContext"); byte[] bytes = new byte[ALL_FORMAT_LENGTH]; bytes[VERSION_ID_OFFSET] = VERSION_ID; bytes[TRACE_ID_FIELD_ID_OFFSET] = TRACE_ID_FIELD_ID; spanContext.getTraceId().copyBytesTo(bytes, TRACE_ID_OFFSET); bytes[SPAN_ID_FIELD_ID_OFFSET] = SPAN_ID_FIELD_ID; spanContext.getSpanId().copyBytesTo(bytes, SPAN_ID_OFFSET); bytes[TRACE_OPTION_FIELD_ID_OFFSET] = TRACE_OPTION_FIELD_ID; spanContext.getTraceOptions().copyBytesTo(bytes, TRACE_OPTIONS_OFFSET); return bytes; }