async public Task WriteAsync(byte[] Data, int Offset = 0, int Count = -1)
{
if (Count < 0) Count = Data.Length;
if (!HeadersSent) await SendHeadersAsync();
if (ChunkedTransferEncoding)
{
var DataPre = Encoding.GetBytes(Convert.ToString(Count, 16).ToUpper() + "\r\n");
var DataPost = Encoding.GetBytes("\r\n");
if (Buffering)
{
Buffer.Write(DataPre, 0, DataPre.Length);
Buffer.Write(Data, Offset, Count);
Buffer.Write(DataPost, 0, DataPost.Length);
}
else
{
var Temp = new byte[DataPre.Length + Count + DataPost.Length];
Array.Copy(DataPre, 0, Temp, 0, DataPre.Length);
if (Count > 0) Array.Copy(Data, Offset, Temp, 0 + DataPre.Length, Count);
Array.Copy(DataPost, 0, Temp, 0 + DataPre.Length + Count, DataPost.Length);
await Socket.WriteAsync(Temp, 0, (DataPre.Length + Count + DataPost.Length));
}
}
else
{
if (Buffering)
{
Buffer.Write(Data, Offset, Count);
}
else
{
await Socket.WriteAsync(Data, Offset, Count);
}
}
}