protected void insert()

in java/commons/src/main/java/com/epam/deltix/data/connectors/commons/l2/Book.java [184:221]


    protected void insert(final int depth, final E event) {
        if (depth < 0) {
            return;
        }

        final boolean notifyInsert = listener != null ?
            listener.beforeInsert(this, depth, event) : false;

        if (currentSize == items.length) {
            if (items.length >= BOOK_SIZE_LIMIT) {
                throw new IllegalStateException("Unbelievable book size " + items.length);
            }

            final I[] newItems = (I[]) Array.newInstance(items.getClass().getComponentType(),
                    items.length << 1); // unchecked
            System.arraycopy(items, 0, newItems, 0, items.length);
            items = newItems;
        }

        int tail = currentSize - depth;
        if (tail > 0) {
            if (currentSize == items.length) {
                tail--;
            }

            System.arraycopy(items, depth, items, depth + 1, tail);
        }

        final I item = pool.borrow();

        item.set(event);
        items[depth] = item;
        currentSize++;

        if (notifyInsert) {
            listener.onInsert(this, depth, item);
        }
    }