Class BinaryFormat

java.lang.Object
io.grpc.opentelemetry.BinaryFormat
All Implemented Interfaces:
io.grpc.Metadata.BinaryMarshaller<io.opentelemetry.api.trace.SpanContext>

final class BinaryFormat extends Object implements io.grpc.Metadata.BinaryMarshaller<io.opentelemetry.api.trace.SpanContext>
Binary encoded SpanContext for context propagation. This is adapted from OpenCensus binary format.

BinaryFormat format:

  • Binary value: <version_id><version_format>
  • version_id: 1-byte representing the version id.
  • For version_id = 0:
    • version_format: <field><field>
    • field_format: <field_id><field_format>
    • Fields:
      • TraceId: (field_id = 0, len = 16, default = "0000000000000000") - 16-byte array representing the trace_id.
      • SpanId: (field_id = 1, len = 8, default = "00000000") - 8-byte array representing the span_id.
      • TraceFlags: (field_id = 2, len = 1, default = "0") - 1-byte array representing the trace_flags.
    • Fields MUST be encoded using the field id order (smaller to higher).
    • Valid value example:
      • {0, 0, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 1, 97, 98, 99, 100, 101, 102, 103, 104, 2, 1}
      • version_id = 0;
      • trace_id = {64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79}
      • span_id = {97, 98, 99, 100, 101, 102, 103, 104};
      • trace_flags = {1};
  • Field Details

    • VERSION_ID

      private static final byte VERSION_ID
      See Also:
    • VERSION_ID_OFFSET

      private static final int VERSION_ID_OFFSET
      See Also:
    • ID_SIZE

      private static final byte ID_SIZE
      See Also:
    • TRACE_ID_FIELD_ID

      private static final byte TRACE_ID_FIELD_ID
      See Also:
    • TRACE_ID_FIELD_ID_OFFSET

      private static final int TRACE_ID_FIELD_ID_OFFSET
      See Also:
    • TRACE_ID_OFFSET

      private static final int TRACE_ID_OFFSET
      See Also:
    • TRACE_ID_SIZE

      private static final int TRACE_ID_SIZE
    • SPAN_ID_FIELD_ID

      private static final byte SPAN_ID_FIELD_ID
      See Also:
    • SPAN_ID_FIELD_ID_OFFSET

      private static final int SPAN_ID_FIELD_ID_OFFSET
    • SPAN_ID_OFFSET

      private static final int SPAN_ID_OFFSET
    • SPAN_ID_SIZE

      private static final int SPAN_ID_SIZE
    • TRACE_FLAG_FIELD_ID

      private static final byte TRACE_FLAG_FIELD_ID
      See Also:
    • TRACE_FLAG_FIELD_ID_OFFSET

      private static final int TRACE_FLAG_FIELD_ID_OFFSET
    • TRACE_FLAG_OFFSET

      private static final int TRACE_FLAG_OFFSET
    • REQUIRED_FORMAT_LENGTH

      private static final int REQUIRED_FORMAT_LENGTH
    • TRACE_FLAG_SIZE

      private static final int TRACE_FLAG_SIZE
    • ALL_FORMAT_LENGTH

      private static final int ALL_FORMAT_LENGTH
    • INSTANCE

      private static final BinaryFormat INSTANCE
  • Constructor Details

    • BinaryFormat

      BinaryFormat()
  • Method Details

    • getInstance

      public static BinaryFormat getInstance()
    • toBytes

      public byte[] toBytes(io.opentelemetry.api.trace.SpanContext spanContext)
      Specified by:
      toBytes in interface io.grpc.Metadata.BinaryMarshaller<io.opentelemetry.api.trace.SpanContext>
    • parseBytes

      public io.opentelemetry.api.trace.SpanContext parseBytes(byte[] serialized)
      Specified by:
      parseBytes in interface io.grpc.Metadata.BinaryMarshaller<io.opentelemetry.api.trace.SpanContext>