public static RelayRequest Read(Stream stream)
{
string line = null;
var requests = new List<string>();
var buf = new List<byte>();
while (line!="") {
var value = stream.ReadByte();
if (value<0) return null;
buf.Add((byte)value);
if (buf.Count >= 2 && buf[buf.Count - 2] == '\r' && buf[buf.Count - 1] == '\n') {
line = System.Text.Encoding.UTF8.GetString(buf.ToArray(), 0, buf.Count - 2);
if (line!="") requests.Add(line);
buf.Clear();
}
}
return new RelayRequest(requests);
}
}