/// <summary> /// Add before an entry in the linked list. /// </summary> public void AddBefore(EncoderHeaderEntry existingEntry) { After = existingEntry; Before = existingEntry.Before; Before !.After = this; After !.Before = this; }
private void PushRemovedEntry(EncoderHeaderEntry removed) { if (_removed != null) { removed.Next = _removed; } _removed = removed; }
public DynamicHPackEncoder(bool allowDynamicCompression = true, uint maxHeaderTableSize = DefaultHeaderTableSize) { _allowDynamicCompression = allowDynamicCompression; _maxHeaderTableSize = maxHeaderTableSize; Head = new EncoderHeaderEntry(); Head.Initialize(-1, string.Empty, string.Empty, 0, int.MaxValue, null); // Bucket count balances memory usage and the expected low number of headers (constrained by the header table size). // Performance with different bucket counts hasn't been measured in detail. _headerBuckets = new EncoderHeaderEntry[16]; _hashMask = (byte)(_headerBuckets.Length - 1); Head.Before = Head.After = Head; }