Home / Class/ ValueIterator Class — netty Architecture

ValueIterator Class — netty Architecture

Architecture documentation for the ValueIterator class in DefaultHeaders.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  90cff61d_bf7a_6b09_9c92_ac55cd618c03["ValueIterator"]
  d13c6b28_cff5_5364_b6ce_dba100ef2ef4["DefaultHeaders.java"]
  90cff61d_bf7a_6b09_9c92_ac55cd618c03 -->|defined in| d13c6b28_cff5_5364_b6ce_dba100ef2ef4
  cc6b947b_9581_bb01_4535_230182cc7715["ValueIterator()"]
  90cff61d_bf7a_6b09_9c92_ac55cd618c03 -->|method| cc6b947b_9581_bb01_4535_230182cc7715
  c3cc96f6_a97e_68a6_26df_ba1dc50492ab["hasNext()"]
  90cff61d_bf7a_6b09_9c92_ac55cd618c03 -->|method| c3cc96f6_a97e_68a6_26df_ba1dc50492ab
  c839e8fb_f65b_55a8_f9ea_be3fa9fcb773["V()"]
  90cff61d_bf7a_6b09_9c92_ac55cd618c03 -->|method| c839e8fb_f65b_55a8_f9ea_be3fa9fcb773
  d7d3d733_97d0_0ad8_1697_ef61ec7cfca5["remove()"]
  90cff61d_bf7a_6b09_9c92_ac55cd618c03 -->|method| d7d3d733_97d0_0ad8_1697_ef61ec7cfca5
  1ac90ba7_0a8c_5337_f2db_7bb8b3c73923["calculateNext()"]
  90cff61d_bf7a_6b09_9c92_ac55cd618c03 -->|method| 1ac90ba7_0a8c_5337_f2db_7bb8b3c73923

Relationship Graph

Source Code

codec-base/src/main/java/io/netty/handler/codec/DefaultHeaders.java lines 1331–1381

    private final class ValueIterator implements Iterator<V> {
        private final K name;
        private final int hash;
        private HeaderEntry<K, V> removalPrevious;
        private HeaderEntry<K, V> previous;
        private HeaderEntry<K, V> next;

        ValueIterator(K name) {
            this.name = checkNotNull(name, "name");
            hash = hashingStrategy.hashCode(name);
            calculateNext(entries[index(hash)]);
        }

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

        @Override
        public V next() {
            if (!hasNext()) {
                throw new NoSuchElementException();
            }
            if (previous != null) {
                removalPrevious = previous;
            }
            previous = next;
            calculateNext(next.next);
            return previous.value;
        }

        @Override
        public void remove() {
            if (previous == null) {
                throw new IllegalStateException();
            }
            removalPrevious = remove0(previous, removalPrevious);
            previous = null;
        }

        private void calculateNext(HeaderEntry<K, V> entry) {
            while (entry != null) {
                if (entry.hash == hash && hashingStrategy.equals(name, entry.key)) {
                    next = entry;
                    return;
                }
                entry = entry.next;
            }
            next = null;
        }
    }

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free