Ejemplo n.º 1
0
        private async Task LoopMethodFailure2(IThreadLoopEvent loopEvent)
        {
            _loopMethodCalled++;

            await Task.Run(() =>
            {
                throw new Exception("Something bad happened");
            }
                           );
        }
Ejemplo n.º 2
0
        private async Task ProcessEventQueue(IThreadLoopEvent loopEvent)
        {
            while (true)
            {
                EventQueueItem item = null;

                var didDequeue = _queue.TryDequeue(out item);

                if (!didDequeue)
                {
                    return;
                }

                FireEvent(item.Event);

                if (loopEvent.IsCancelled)
                {
                    break;
                }
            }

            await Task.CompletedTask;
        }
        private Task RunEngine(IThreadLoopEvent resetEvent)
        {
            if (!IsRunning)
            {
                resetEvent.Cancel();
                return(Task.CompletedTask);
            }

            try
            {
                // Record how much time has passed
                var elapsed = _clock.Elapsed - _lastElapsedTime;

                // Save last elapsed time so that we get chunks of time - rather than an increased total time
                _lastElapsedTime = _clock.Elapsed;

                // Increment game clocks
                foreach (var gameMeta in _games)
                {
                    if (resetEvent.IsCancelled)
                    {
                        break;
                    }

                    var gameClock = gameMeta.GameClock;

                    // If game is complete - then skip
                    if (gameClock.IsComplete)
                    {
                        continue;
                    }

                    //
                    IncrementGameClock(gameClock, elapsed);

                    //_log.InfoFormat(
                    //    "{0} - Q{1} {2}",
                    //    game.Name,
                    //    gameClock.Quarter,
                    //    gameClock.Time
                    //    );

                    // Push changes to any listener
                    lock (_lockObject)
                    {
                        foreach (var listener in _listeners)
                        {
                            listener.GameClockChange(
                                gameMeta.Game,
                                gameMeta.GameClock
                                );
                        }
                    }
                }

                // Add possible scores
                foreach (var gameMeta in _games)
                {
                    if (resetEvent.IsCancelled)
                    {
                        break;
                    }

                    // If game is complete - then skip
                    if (gameMeta.GameClock.IsComplete)
                    {
                        continue;
                    }

                    var score = AddPossibleGameScore(gameMeta.Game);

                    if (score.IsNull())
                    {
                        continue;
                    }

                    _log.InfoFormat(
                        "{0} - {1}, +{2}",
                        gameMeta.Game.Name,
                        score.PlayerName,
                        score.Points
                        );

                    // Push changes to any listener
                    lock (_lockObject)
                    {
                        foreach (var listener in _listeners)
                        {
                            listener.ScoreChange(gameMeta.Game, gameMeta.GameClock, score);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex, ex.Message);
            }

            return(Task.CompletedTask);
        }
Ejemplo n.º 4
0
        private Task LoopMethodFailure(IThreadLoopEvent loopEvent)
        {
            _loopMethodCalled++;

            throw new Exception("Something bad happened");
        }
Ejemplo n.º 5
0
        private Task LoopMethod(IThreadLoopEvent loopEvent)
        {
            _loopMethodCalled++;

            return(Task.CompletedTask);
        }