internal Enumerator(HttpResponseHeaders collection)
 {
     _collection        = collection;
     _currentBits       = collection._bits;
     _next              = _currentBits != 0 ? BitOperations.TrailingZeroCount(_currentBits) : -1;
     _current           = default;
     _currentKnownType  = default;
     _hasUnknown        = collection.MaybeUnknown != null;
     _unknownEnumerator = _hasUnknown
         ? collection.MaybeUnknown !.GetEnumerator()
         : default;
        public void Initialize(IDictionary <string, StringValues> headers)
        {
            _headersEnumerator  = default;
            _trailersEnumerator = default;
            _genericEnumerator  = headers.GetEnumerator();
            _isTrailers         = false;

            _stringValuesEnumerator = default;
            Current          = default;
            _knownHeaderType = default;
        }
 internal Enumerator(HttpResponseTrailers collection)
 {
     _collection        = collection;
     _bits              = collection._bits;
     _next              = 0;
     _current           = default;
     _currentKnownType  = default;
     _hasUnknown        = collection.MaybeUnknown != null;
     _unknownEnumerator = _hasUnknown
         ? collection.MaybeUnknown !.GetEnumerator()
         : default;
        public void Initialize(HttpResponseTrailers headers)
        {
            _headersEnumerator  = default;
            _trailersEnumerator = headers.GetEnumerator();
            _genericEnumerator  = null;
            _isTrailers         = true;

            _stringValuesEnumerator = default;
            Current          = default;
            _knownHeaderType = default;
        }
Exemple #5
0
        private static bool EncodeHeader(KnownHeaderType knownHeaderType, string name, string value, Span <byte> buffer, out int length)
        {
            var hPackStaticTableId = GetResponseHeaderStaticTableId(knownHeaderType);

            if (hPackStaticTableId == -1)
            {
                return(HPackEncoder.EncodeLiteralHeaderFieldWithoutIndexingNewName(name, value, buffer, out length));
            }
            else
            {
                return(HPackEncoder.EncodeLiteralHeaderFieldWithoutIndexing(hPackStaticTableId, value, buffer, out length));
            }
        }
Exemple #6
0
 public void Reset()
 {
     if (_headersType == HeadersType.Headers)
     {
         _headersEnumerator.Reset();
     }
     else if (_headersType == HeadersType.Trailers)
     {
         _trailersEnumerator.Reset();
     }
     else
     {
         _genericEnumerator !.Reset();
     }
     _stringValuesEnumerator = default;
     _knownHeaderType        = default;
 }
Exemple #7
0
        private bool SetCurrent(string name, StringValues value, KnownHeaderType knownHeaderType)
        {
            _knownHeaderType = knownHeaderType;

            if (value.Count == 1)
            {
                Current            = new KeyValuePair <string, string>(name, value.ToString());
                _hasMultipleValues = false;
                return(true);
            }
            else
            {
                _stringValuesEnumerator = value.GetEnumerator();
                _hasMultipleValues      = true;
                return(MoveNextOnStringEnumerator(name));
            }
        }
 private bool TryGetNextStringEnumerator(out StringValues.Enumerator enumerator)
 {
     if (_genericEnumerator != null)
     {
         if (!_genericEnumerator.MoveNext())
         {
             enumerator = default;
             return(false);
         }
         else
         {
             enumerator       = _genericEnumerator.Current.Value.GetEnumerator();
             _knownHeaderType = default;
             return(true);
         }
     }
     else if (_isTrailers)
     {
         if (!_trailersEnumerator.MoveNext())
         {
             enumerator = default;
             return(false);
         }
         else
         {
             enumerator       = _trailersEnumerator.Current.Value.GetEnumerator();
             _knownHeaderType = _trailersEnumerator.CurrentKnownType;
             return(true);
         }
     }
     else
     {
         if (!_headersEnumerator.MoveNext())
         {
             enumerator = default;
             return(false);
         }
         else
         {
             enumerator       = _headersEnumerator.Current.Value.GetEnumerator();
             _knownHeaderType = _headersEnumerator.CurrentKnownType;
             return(true);
         }
     }
 }
Exemple #9
0
 internal static int GetResponseHeaderStaticTableId(KnownHeaderType responseHeaderType)
 {
     // Not Implemented
     return(-1);
 }
Exemple #10
0
        internal static int GetResponseHeaderStaticTableId(KnownHeaderType responseHeaderType)
        {
            switch (responseHeaderType)
            {
            case KnownHeaderType.CacheControl:
                return(H2StaticTable.CacheControl);

            case KnownHeaderType.Date:
                return(H2StaticTable.Date);

            case KnownHeaderType.TransferEncoding:
                return(H2StaticTable.TransferEncoding);

            case KnownHeaderType.Via:
                return(H2StaticTable.Via);

            case KnownHeaderType.Allow:
                return(H2StaticTable.Allow);

            case KnownHeaderType.ContentType:
                return(H2StaticTable.ContentType);

            case KnownHeaderType.ContentEncoding:
                return(H2StaticTable.ContentEncoding);

            case KnownHeaderType.ContentLanguage:
                return(H2StaticTable.ContentLanguage);

            case KnownHeaderType.ContentLocation:
                return(H2StaticTable.ContentLocation);

            case KnownHeaderType.ContentRange:
                return(H2StaticTable.ContentRange);

            case KnownHeaderType.Expires:
                return(H2StaticTable.Expires);

            case KnownHeaderType.LastModified:
                return(H2StaticTable.LastModified);

            case KnownHeaderType.AcceptRanges:
                return(H2StaticTable.AcceptRanges);

            case KnownHeaderType.Age:
                return(H2StaticTable.Age);

            case KnownHeaderType.ETag:
                return(H2StaticTable.ETag);

            case KnownHeaderType.Location:
                return(H2StaticTable.Location);

            case KnownHeaderType.ProxyAuthenticate:
                return(H2StaticTable.ProxyAuthenticate);

            case KnownHeaderType.RetryAfter:
                return(H2StaticTable.RetryAfter);

            case KnownHeaderType.Server:
                return(H2StaticTable.Server);

            case KnownHeaderType.SetCookie:
                return(H2StaticTable.SetCookie);

            case KnownHeaderType.Vary:
                return(H2StaticTable.Vary);

            case KnownHeaderType.WWWAuthenticate:
                return(H2StaticTable.WwwAuthenticate);

            case KnownHeaderType.AccessControlAllowOrigin:
                return(H2StaticTable.AccessControlAllowOrigin);

            case KnownHeaderType.ContentLength:
                return(H2StaticTable.ContentLength);

            default:
                return(-1);
            }
        }