private int AddServerAndDate(int offset)
{
var envTicks = Environment.TickCount / 1000;
if (LastTicks != envTicks)
{
var date = DateTime.UtcNow;
var ticks = date.Ticks / 10000000;
var original = ticks;
var sec = ticks % 60;
ticks = ticks / 60;
var min = ticks % 60;
ticks = ticks / 60;
var hour = ticks % 24;
ticks = ticks / 24;
var dayOfWeek = ticks % 7;
var dayNameBuf = DateDayNames[dayOfWeek];
var dayBuf = DateNumbers[date.Day];
var monthBuf = DateDayMonths[date.Month - 1];
var yearBuf1 = DateNumbers[date.Year / 100];
var yearBuf2 = DateNumbers[date.Year % 100];
var hourBuf = DateNumbers[hour];
var minBuf = DateNumbers[min];
var secBuf = DateNumbers[sec];
Buffer.BlockCopy(DateNow, 0, OutputTemp, offset, 6);
var start = offset + 6;
OutputTemp[start] = dayNameBuf[0];
OutputTemp[start + 1] = dayNameBuf[1];
OutputTemp[start + 2] = dayNameBuf[2];
OutputTemp[start + 3] = 44;
OutputTemp[start + 4] = 32;
OutputTemp[start + 5] = dayBuf[0];
OutputTemp[start + 6] = dayBuf[1];
OutputTemp[start + 7] = 32;
OutputTemp[start + 8] = monthBuf[0];
OutputTemp[start + 9] = monthBuf[1];
OutputTemp[start + 10] = monthBuf[2];
OutputTemp[start + 11] = 32;
OutputTemp[start + 12] = yearBuf1[0];
OutputTemp[start + 13] = yearBuf1[1];
OutputTemp[start + 14] = yearBuf2[0];
OutputTemp[start + 15] = yearBuf2[1];
OutputTemp[start + 16] = 32;
OutputTemp[start + 17] = hourBuf[0];
OutputTemp[start + 18] = hourBuf[1];
OutputTemp[start + 19] = 58;
OutputTemp[start + 20] = minBuf[0];
OutputTemp[start + 21] = minBuf[1];
OutputTemp[start + 22] = 58;
OutputTemp[start + 23] = secBuf[0];
OutputTemp[start + 24] = secBuf[1];
Buffer.BlockCopy(OutputTemp, start, TmpDateNow, 6, 25);
LastTicks = envTicks;
Buffer.BlockCopy(TmpDateNow, 31, OutputTemp, start + 25, TmpDateNow.Length - 31);
Buffer.BlockCopy(ServerName, 0, OutputTemp, offset + TmpDateNow.Length, ServerName.Length);
if (Monitor.TryEnter(ServerName))
{
var tdn = DateNow;
DateNow = TmpDateNow;
TmpDateNow = tdn;
Monitor.Exit(ServerName);
}
return offset + DateNow.Length + ServerName.Length;
}
var dn = DateNow;
Buffer.BlockCopy(DateNow, 0, OutputTemp, offset, dn.Length);
Buffer.BlockCopy(ServerName, 0, OutputTemp, offset + dn.Length, ServerName.Length);
return offset + dn.Length + ServerName.Length;
}