Example #1
0
        void ThreadEntry()
        {
            var        sw           = Stopwatch.StartNew();
            var        previousTs32 = _localPeer.LocalPeer.Time32;
            const uint period32     = (uint)TimeSpan.TicksPerMillisecond * 10;
            int        counter      = 0;

            while (!_disposing)
            {
                try
                {
                    _actionsQueue.ExecuteQueued();

                    var timeNow32 = _localPeer.LocalPeer.Time32;

                    while (MiscProcedures.TimeStamp1IsLess(previousTs32, timeNow32) && !_disposing)
                    {
                        if (_debug)
                        {
                            Debugger.Break();
                        }

                        previousTs32 = unchecked (previousTs32 + period32);
                        foreach (var stream in _streams.Values)
                        {
                            stream.SendPacketsIfNeeded_10ms();
                        }
                        counter++;
                        if (counter % 10 == 0)
                        {
                            foreach (var stream in _streams.Values)
                            {
                                stream.SendPayloadPacketsIfNeeded_100ms();
                            }
                        }
                        if (counter % 100 == 0)
                        {
                            foreach (var stream in _streams.Values)
                            {
                                stream.SendPayloadPacketsIfNeeded_1s();
                            }
                        }
                    }
                }
                catch (Exception exc)
                {
                    _localPeer.HandleException(exc);
                }
                Thread.Sleep(10);
            }
        }