Home / Class/ ReadOnlyValueIterator Class — netty Architecture

ReadOnlyValueIterator Class — netty Architecture

Architecture documentation for the ReadOnlyValueIterator class in ReadOnlyHttp2Headers.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  59c3341d_5a2c_3b9a_13ac_5858bb471904["ReadOnlyValueIterator"]
  298441ed_bdf2_76b6_011e_5ffe970f6cb8["ReadOnlyHttp2Headers.java"]
  59c3341d_5a2c_3b9a_13ac_5858bb471904 -->|defined in| 298441ed_bdf2_76b6_011e_5ffe970f6cb8
  ab6f5cd3_fe8d_9a78_42fe_76c3313cef76["ReadOnlyValueIterator()"]
  59c3341d_5a2c_3b9a_13ac_5858bb471904 -->|method| ab6f5cd3_fe8d_9a78_42fe_76c3313cef76
  ad1231a0_6365_b46e_1c4c_a894740db9a5["hasNext()"]
  59c3341d_5a2c_3b9a_13ac_5858bb471904 -->|method| ad1231a0_6365_b46e_1c4c_a894740db9a5
  430b05f8_ded3_9445_eefc_aadb1449996f["CharSequence()"]
  59c3341d_5a2c_3b9a_13ac_5858bb471904 -->|method| 430b05f8_ded3_9445_eefc_aadb1449996f
  6d504e76_0bf0_7ded_d9c7_d21e393a38be["remove()"]
  59c3341d_5a2c_3b9a_13ac_5858bb471904 -->|method| 6d504e76_0bf0_7ded_d9c7_d21e393a38be
  3041d822_d4a5_8ac8_d3ef_147bcbbcfa2e["calculateNext()"]
  59c3341d_5a2c_3b9a_13ac_5858bb471904 -->|method| 3041d822_d4a5_8ac8_d3ef_147bcbbcfa2e

Relationship Graph

Source Code

codec-http2/src/main/java/io/netty/handler/codec/http2/ReadOnlyHttp2Headers.java lines 786–838

    private final class ReadOnlyValueIterator implements Iterator<CharSequence> {
        private int i;
        private final int nameHash;
        private final CharSequence name;
        private AsciiString[] current = pseudoHeaders.length != 0 ? pseudoHeaders : otherHeaders;
        private AsciiString next;

        ReadOnlyValueIterator(CharSequence name) {
            nameHash = AsciiString.hashCode(name);
            this.name = name;
            calculateNext();
        }

        @Override
        public boolean hasNext() {
            return next != null;
        }

        @Override
        public CharSequence next() {
            if (!hasNext()) {
                throw new NoSuchElementException();
            }
            CharSequence current = next;
            calculateNext();
            return current;
        }

        @Override
        public void remove() {
            throw new UnsupportedOperationException("read only");
        }

        private void calculateNext() {
            for (; i < current.length; i += 2) {
                AsciiString roName = current[i];
                if (roName.hashCode() == nameHash && roName.contentEqualsIgnoreCase(name)) {
                    if (i + 1 < current.length) {
                        next = current[i + 1];
                        i += 2;
                    }
                    return;
                }
            }
            if (current == pseudoHeaders) {
                i = 0;
                current = otherHeaders;
                calculateNext();
            } else {
                next = null;
            }
        }
    }

Frequently Asked Questions

What is the ReadOnlyValueIterator class?
ReadOnlyValueIterator is a class in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/ReadOnlyHttp2Headers.java.
Where is ReadOnlyValueIterator defined?
ReadOnlyValueIterator is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/ReadOnlyHttp2Headers.java at line 786.

Analyze Your Own Codebase

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

Try Supermodel Free