Class MarshalerContext

java.lang.Object
io.opentelemetry.exporter.internal.marshal.MarshalerContext

public final class MarshalerContext extends Object
Class for keeping marshaling state. The state consists of integers, that we call sizes, and objects, that we call data. Both integers and objects can be read from the state in the order they were added (first in, first out). Additionally, this class provides various pools and caches for objects that can be reused between marshalling attempts.

This class is internal and is hence not for public use. Its APIs are unstable and can change at any time.

  • Field Details

    • marshalStringNoAllocation

      private final boolean marshalStringNoAllocation
    • marshalStringUnsafe

      private final boolean marshalStringUnsafe
    • sizes

      private int[] sizes
    • sizeReadIndex

      private int sizeReadIndex
    • sizeWriteIndex

      private int sizeWriteIndex
    • data

      private Object[] data
    • dataReadIndex

      private int dataReadIndex
    • dataWriteIndex

      private int dataWriteIndex
    • traceIdPool

      private final MarshalerContext.IdPool traceIdPool
    • spanIdPool

      private final MarshalerContext.IdPool spanIdPool
    • mapPool

      private final MarshalerContext.Pool<Map<?,?>> mapPool
    • listPool

      private final MarshalerContext.Pool<List<?>> listPool
    • KEY_INDEX

      private static final AtomicInteger KEY_INDEX
    • instances

      private Object[] instances
  • Constructor Details

    • MarshalerContext

      public MarshalerContext()
    • MarshalerContext

      public MarshalerContext(boolean marshalStringNoAllocation, boolean marshalStringUnsafe)
  • Method Details

    • marshalStringNoAllocation

      public boolean marshalStringNoAllocation()
    • marshalStringUnsafe

      public boolean marshalStringUnsafe()
    • addSize

      public void addSize(int size)
    • addSize

      public int addSize()
    • growSizeIfNeeded

      private void growSizeIfNeeded()
    • setSize

      public void setSize(int index, int size)
    • getSize

      public int getSize()
    • addData

      public void addData(@Nullable Object o)
    • growDataIfNeeded

      private void growDataIfNeeded()
    • getData

      public <T> T getData(Class<T> type)
    • getTraceIdBuffer

      public byte[] getTraceIdBuffer()
      Returns a buffer that can be used to hold a trace id.
    • getSpanIdBuffer

      public byte[] getSpanIdBuffer()
      Returns a buffer that can be used to hold a span id.
    • getIdentityMap

      public <K, V> Map<K,V> getIdentityMap()
      Returns a pooled identity map.
    • getList

      public <T> List<T> getList()
      Returns a pooled list.
    • resetReadIndex

      public void resetReadIndex()
      Reset context so that serialization could be re-run.
    • reset

      public void reset()
      Reset context so that it could be reused.
    • key

      public static MarshalerContext.Key key()
    • getInstance

      public <T> T getInstance(MarshalerContext.Key key, Supplier<T> supplier)