@Override public int hashCode(CharSequence o) { return AsciiString.hashCode(o); }
@Override public int hashCode(CharSequence o) { return AsciiString.hashCode(o); }
@Override public int hashCode(CharSequence o) { return AsciiString.hashCode(o); }
@Override public int hashCode(CharSequence o) { return AsciiString.hashCode(o); }
private CharSequence get0(CharSequence name) { final int nameHash = AsciiString.hashCode(name); for (int i = 0; i < nameValuePairs.length; i += 2) { CharSequence roName = nameValuePairs[i]; if (AsciiString.hashCode(roName) == nameHash && contentEqualsIgnoreCase(roName, name)) { return nameValuePairs[i + 1]; } } return null; }
@Override public VertxHttpHeaders remove(CharSequence name) { Objects.requireNonNull(name, "name"); int h = AsciiString.hashCode(name); int i = h & 0x0000000F; remove0(h, i, name); return this; }
@Override public VertxHttpHeaders add(CharSequence name, Iterable values) { int h = AsciiString.hashCode(name); int i = h & 0x0000000F; for (Object vstr: values) { add0(h, i, name, (String) vstr); } return this; }
@Override public VertxHttpHeaders add(CharSequence name, CharSequence value) { int h = AsciiString.hashCode(name); int i = h & 0x0000000F; add0(h, i, name, value); return this; }
private int findNextValue() { for (int i = nextNameIndex; i < nameValuePairs.length; i += 2) { final CharSequence roName = nameValuePairs[i]; if (nameHash == AsciiString.hashCode(roName) && contentEqualsIgnoreCase(name, roName)) { return i; } } return -1; } }
ReadOnlyValueIterator(CharSequence name) { this.name = name; nameHash = AsciiString.hashCode(name); nextNameIndex = findNextValue(); }
ReadOnlyStringValueIterator(CharSequence name) { this.name = name; nameHash = AsciiString.hashCode(name); nextNameIndex = findNextValue(); }
private int findNextValue() { for (int i = nextNameIndex; i < nameValuePairs.length; i += 2) { final CharSequence roName = nameValuePairs[i]; if (nameHash == AsciiString.hashCode(roName) && contentEqualsIgnoreCase(name, roName)) { return i; } } return -1; } }
@Override public List<String> getAll(CharSequence name) { Objects.requireNonNull(name, "name"); LinkedList<String> values = new LinkedList<>(); int h = AsciiString.hashCode(name); int i = h & 0x0000000F; VertxHttpHeaders.MapEntry e = entries[i]; while (e != null) { CharSequence key = e.key; if (e.hash == h && (name == key || AsciiString.contentEqualsIgnoreCase(name, key))) { values.addFirst(e.getValue().toString()); } e = e.next; } return values; }
@Override public VertxHttpHeaders set(CharSequence name, Iterable values) { Objects.requireNonNull(values, "values"); int h = AsciiString.hashCode(name); int i = h & 0x0000000F; remove0(h, i, name); for (Object v: values) { if (v == null) { break; } add0(h, i, name, (CharSequence) v); } return this; }
@Override public void checkNameCollision() { assertEquals(AsciiString.hashCode(sameHash1), AsciiString.hashCode(sameHash2)); assertEquals(AsciiString.hashCode(sameBucket1) & 0xF, AsciiString.hashCode(sameBucket2) & 0xF); assertNotEquals(AsciiString.hashCode(sameBucket1), AsciiString.hashCode(sameBucket2)); }
private VertxHttpHeaders set0(final CharSequence name, final CharSequence strVal) { int h = AsciiString.hashCode(name); int i = h & 0x0000000F; remove0(h, i, name); if (strVal != null) { // test me add0(h, i, name, strVal); } return this; }
private CharSequence get0(CharSequence name) { int h = AsciiString.hashCode(name); int i = h & 0x0000000F; VertxHttpHeaders.MapEntry e = entries[i]; CharSequence value = null; while (e != null) { CharSequence key = e.key; if (e.hash == h && (name == key || AsciiString.contentEqualsIgnoreCase(name, key))) { value = e.getValue(); } e = e.next; } return value; }
@Override public boolean equals(Object obj) { if (obj == null || obj.getClass() != AsciiString.class) { return false; } if (this == obj) { return true; } AsciiString other = (AsciiString) obj; return length() == other.length() && hashCode() == other.hashCode() && PlatformDependent.equals(array(), arrayOffset(), other.array(), other.arrayOffset(), length()); }
@Override public boolean contains(CharSequence name, CharSequence value, boolean ignoreCase) { int h = AsciiString.hashCode(name); int i = h & 0x0000000F; VertxHttpHeaders.MapEntry e = entries[i]; HashingStrategy<CharSequence> strategy = ignoreCase ? CASE_INSENSITIVE_HASHER : CASE_SENSITIVE_HASHER; while (e != null) { CharSequence key = e.key; if (e.hash == h && (name == key || AsciiString.contentEqualsIgnoreCase(name, key))) { if (strategy.equals(value, e.getValue())) { return true; } } e = e.next; } return false; }
@Override public boolean equals(Object obj) { if (obj == null || obj.getClass() != AsciiString.class) { return false; } if (this == obj) { return true; } AsciiString other = (AsciiString) obj; return length() == other.length() && hashCode() == other.hashCode() && PlatformDependent.equals(array(), arrayOffset(), other.array(), other.arrayOffset(), length()); }