Example #1
0
 public HttpMessageParser()
 {
     _parser = new HttpParser(this);
     _message = new HttpMessage();
     _messages = new Queue<IHttpMessage>();
 }
Example #2
0
        public void OnMessageEnd(HttpParser parser)
        {
            // Create stream
            var length = _message.BodyBytes.Aggregate(0, (s, b) => s + b.Count);
            byte[] bs = new byte[length];
            if (length > 0)
            {
                int where = 0;
                foreach (var buf in _message.BodyBytes)
                {
                    Buffer.BlockCopy(buf.Array, buf.Offset, bs, where, buf.Count);
                    where += buf.Count;
                }
            }
            _message.Body = new MemoryStream(bs, 0, bs.Length, false, false);
            _message.Body.Position = 0;
            _message.BodyBytes = null;

            _message.HttpVersion = new Version(parser.MajorVersion, parser.MinorVersion);
            _message.ShouldKeepAlive = parser.ShouldKeepAlive;
            _messages.Enqueue(_message);
            _message = new HttpMessage();
        }