コード例 #1
0
        private void PushGameEventOnQueue(string jsonString, Queues <NbaGameEvent, PubMessage> queues, Dictionary <Guid, int> gameDictionary)
        {
            NbaGameEvent nbaGameEvent = null;
            Heartbeat    heartbeat    = null;
            bool         isGameEvent;
            bool         isHeartbeat;

            try
            {
                nbaGameEvent = NbaGameEvent.FromJson(jsonString);
                isGameEvent  = true;
            }
            catch (NullReferenceException)
            {
                isGameEvent = false;
            }

            try
            {
                heartbeat   = Heartbeat.FromJson(jsonString);
                isHeartbeat = true;
            }
            catch (Exception)
            {
                isHeartbeat = false;
            }

            if (!isGameEvent && !isHeartbeat)
            {
                throw new Exception("Failed to deserialize both GameEvent and Heartbeat");
            }

            if (isGameEvent && nbaGameEvent?.Payload != null)
            {
                Guid gameId    = nbaGameEvent.Payload.Game.Id;
                int  gameIndex = gameDictionary[gameId];

                queues.ScoreQueueList[gameIndex].Push(nbaGameEvent);
            }

            if (isHeartbeat && heartbeat != null)
            {
                _heartBeatNumber++;

                if (_heartBeatNumber > 2)
                {
                    _pusherUtil.SendHeartBeat();
                    _heartBeatNumber = 0;
                }
            }
        }
コード例 #2
0
ファイル: RadarNba.cs プロジェクト: reashore/ConcurrentGames
        private void RaiseGameEvent(string jsonString)
        {
            try
            {
                TimeOfLastRadarGameEventOrHeartbeat = DateTime.Now;
                bool         isHeartbeat  = jsonString.Contains("heartbeat");
                NbaGameEvent mlbGameEvent = null;

                if (isHeartbeat)
                {
#if DEBUG
                    Logger.Info("Radar heartbeat");
#endif
                }

                if (!isHeartbeat)
                {
                    Logger.Info(jsonString);
                    mlbGameEvent = NbaGameEvent.FromJson(jsonString);
                }

                bool isGameEvent = mlbGameEvent != null;

                if (isGameEvent)
                {
                    NbaGameEventEventArgs nbaGameEventEventArgs = new NbaGameEventEventArgs
                    {
                        GameEvent = mlbGameEvent
                    };
                    OnRadarGameEvent(nbaGameEventEventArgs);
                }
            }
            catch (Exception e)
            {
                Logger.Info(e);
            }
        }