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; } } }
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); } }