private static void PulseChecker(object source, ElapsedEventArgs e)
{
const int MAX_LOSTBEATS = 10;
foreach (var u in LostBeats)
{
LostBeats[u.Key]++;
}
foreach (var elementGame in Games)
{
if (elementGame.Value.PlayerWhite != null
&& LostBeats.GetOrAdd(elementGame.Value.PlayerWhite.Name, name => 0) >= MAX_LOSTBEATS)
{
if (elementGame.Value.PlayerBlack != null)
Messages.GetOrAdd(elementGame.Value.PlayerBlack.Name, i => new List<Message>())
.Add(MessageSender.OpponentLostConnection());
elementGame.Value.Act = Act.AbandonedByWhite;
}
if (elementGame.Value.PlayerBlack != null
&& LostBeats.GetOrAdd(elementGame.Value.PlayerBlack.Name, name => 0) >= MAX_LOSTBEATS)
{
if (elementGame.Value.PlayerWhite != null)
Messages.GetOrAdd(elementGame.Value.PlayerWhite.Name, i => new List<Message>())
.Add(MessageSender.OpponentLostConnection());
elementGame.Value.Act = Act.AbandonedByBlack;
}
}
}