Revenj.Http.HttpSocketContext.AddServerAndDate C# (CSharp) Method

AddServerAndDate() private method

private AddServerAndDate ( int offset ) : int
offset int
return int
        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;
        }