Exemple #1
0
 private void ResponseStatus(PipeStream pipeStream)
 {
     if (Status == RequestStatus.Responding)
     {
         var indexof = pipeStream.IndexOf(HeaderTypeFactory.LINE_BYTES);
         if (indexof.EofData != null)
         {
             pipeStream.Read(mBuffer, 0, indexof.Length);
             GetRequestStream().Write(mBuffer, 0, indexof.Length);
             var result = HttpParse.AnalyzeResponseLine(new ReadOnlySpan <byte>(mBuffer, 0, indexof.Length - 2));
             Code   = result.Item2;
             Status = RequestStatus.RespondingHeader;
         }
     }
 }
Exemple #2
0
        public LoadedState Load(PipeStream stream)
        {
            string line;

            if (mState == LoadedState.None)
            {
                if (stream.TryReadWith(HeaderTypeFactory.LINE_BYTES, out line))
                {
                    HttpParse.AnalyzeResponseLine(line, this);
                    mState = LoadedState.Method;
                }
            }
            if (mState == LoadedState.Method)
            {
                if (Header.Read(stream, Cookies))
                {
                    mState = LoadedState.Header;
                }
            }
            if (mState == LoadedState.Header)
            {
                if (string.Compare(Header[HeaderTypeFactory.CONNECTION], "close", true) == 0)
                {
                    this.KeepAlive = false;
                }
                if (string.Compare(Header[HeaderTypeFactory.TRANSFER_ENCODING], "chunked", true) == 0)
                {
                    Chunked = true;
                }
                else
                {
                    string lenstr = Header[HeaderTypeFactory.CONTENT_LENGTH];
                    int    length = 0;
                    if (lenstr != null)
                    {
                        int.TryParse(lenstr, out length);
                    }
                    Length = length;
                }
                mState = LoadedState.Completed;
            }
            return(mState);
        }
Exemple #3
0
 public bool Read(PipeStream stream)
 {
     while (stream.TryReadLine(out string line))
     {
         if (string.IsNullOrEmpty(line))
         {
             return(true);
         }
         if (Code == null)
         {
             var result = HttpParse.AnalyzeResponseLine(line.AsSpan());
             Code        = result.Item2;
             HttpVersion = result.Item1;
             Message     = result.Item3;
         }
         else
         {
             var header = HttpParse.AnalyzeHeader(line.AsSpan());
             Headers[header.Item1] = header.Item2;
         }
     }
     return(false);
 }