public HttpMessageParser() { _parser = new HttpParser(this); _message = new HttpMessage(); _messages = new Queue<IHttpMessage>(); }
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(); }