public async Task<FastcgiPacket> WriteToAsync(Stream ClientStream)
{
if (Content.Count > ushort.MaxValue) throw(new InvalidDataException("Data too long"));
var ContentLength = (ushort)Content.Count;
var PaddingLength = (byte)(MathUtils.Align(ContentLength, 8) - ContentLength);
var Header = new byte[8];
Header[0] = Version;
Header[1] = (byte)Type;
Header[2] = (byte)((RequestId >> 8) & 0xFF);
Header[3] = (byte)((RequestId >> 0) & 0xFF);
Header[4] = (byte)((ContentLength >> 8) & 0xFF);
Header[5] = (byte)((ContentLength >> 0) & 0xFF);
Header[6] = PaddingLength;
Header[7] = 0;
await ClientStream.WriteAsync(Header, 0, Header.Length);
if (ContentLength > 0)
{
await ClientStream.WriteAsync(Content.Array, Content.Offset, Content.Count);
}
if (PaddingLength > 0)
{
await ClientStream.WriteAsync(PaddingWrite, 0, PaddingLength);
}
//await Console.Out.WriteLineAsync(String.Format("WRITE: Packet({0}): {1}({2}:{3})", RequestId, Type, ContentLength, PaddingLength));
return this;
}