Class MarshalerContext


  • public final class MarshalerContext
    extends java.lang.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 Detail

      • marshalStringNoAllocation

        private final boolean marshalStringNoAllocation
      • marshalStringUnsafe

        private final boolean marshalStringUnsafe
      • sizes

        private int[] sizes
      • sizeReadIndex

        private int sizeReadIndex
      • sizeWriteIndex

        private int sizeWriteIndex
      • data

        private java.lang.Object[] data
      • dataReadIndex

        private int dataReadIndex
      • dataWriteIndex

        private int dataWriteIndex
      • KEY_INDEX

        private static final java.util.concurrent.atomic.AtomicInteger KEY_INDEX
      • instances

        private java.lang.Object[] instances
    • Constructor Detail

      • MarshalerContext

        public MarshalerContext()
      • MarshalerContext

        public MarshalerContext​(boolean marshalStringNoAllocation,
                                boolean marshalStringUnsafe)
    • Method Detail

      • 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
                            java.lang.Object o)
      • growDataIfNeeded

        private void growDataIfNeeded()
      • getData

        public <T> T getData​(java.lang.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> java.util.Map<K,​V> getIdentityMap()
        Returns a pooled identity map.
      • getList

        public <T> java.util.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.
      • getInstance

        public <T> T getInstance​(MarshalerContext.Key key,
                                 java.util.function.Supplier<T> supplier)