Home / Class/ CodecOutputLists Class — netty Architecture

CodecOutputLists Class — netty Architecture

Architecture documentation for the CodecOutputLists class in CodecOutputList.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  aac48680_9d95_cb9c_d02a_97c3be1d915d["CodecOutputLists"]
  71209b4a_e4d1_da5a_9c59_6396227fc322["CodecOutputList.java"]
  aac48680_9d95_cb9c_d02a_97c3be1d915d -->|defined in| 71209b4a_e4d1_da5a_9c59_6396227fc322
  ae8221a7_6657_2dbe_c193_b55576e6aea5["CodecOutputLists()"]
  aac48680_9d95_cb9c_d02a_97c3be1d915d -->|method| ae8221a7_6657_2dbe_c193_b55576e6aea5
  a94dd608_4dde_39a1_0b26_ef5628449d49["CodecOutputList()"]
  aac48680_9d95_cb9c_d02a_97c3be1d915d -->|method| a94dd608_4dde_39a1_0b26_ef5628449d49
  b0ad754a_1475_ab92_ff88_0d340ec0bdef["recycle()"]
  aac48680_9d95_cb9c_d02a_97c3be1d915d -->|method| b0ad754a_1475_ab92_ff88_0d340ec0bdef

Relationship Graph

Source Code

codec-base/src/main/java/io/netty/handler/codec/CodecOutputList.java lines 51–91

    private static final class CodecOutputLists implements CodecOutputListRecycler {
        private final CodecOutputList[] elements;
        private final int mask;

        private int currentIdx;
        private int count;

        CodecOutputLists(int numElements) {
            elements = new CodecOutputList[MathUtil.safeFindNextPositivePowerOfTwo(numElements)];
            for (int i = 0; i < elements.length; ++i) {
                // Size of 16 should be good enough for the majority of all users as an initial capacity.
                elements[i] = new CodecOutputList(this, 16);
            }
            count = elements.length;
            currentIdx = elements.length;
            mask = elements.length - 1;
        }

        public CodecOutputList getOrCreate() {
            if (count == 0) {
                // Return a new CodecOutputList which will not be cached. We use a size of 4 to keep the overhead
                // low.
                return new CodecOutputList(NOOP_RECYCLER, 4);
            }
            --count;

            int idx = (currentIdx - 1) & mask;
            CodecOutputList list = elements[idx];
            currentIdx = idx;
            return list;
        }

        @Override
        public void recycle(CodecOutputList codecOutputList) {
            int idx = currentIdx;
            elements[idx] = codecOutputList;
            currentIdx = (idx + 1) & mask;
            ++count;
            assert count <= elements.length;
        }
    }

Frequently Asked Questions

What is the CodecOutputLists class?
CodecOutputLists is a class in the netty codebase, defined in codec-base/src/main/java/io/netty/handler/codec/CodecOutputList.java.
Where is CodecOutputLists defined?
CodecOutputLists is defined in codec-base/src/main/java/io/netty/handler/codec/CodecOutputList.java at line 51.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free