Esempio n. 1
0
        internal void Meet(Reindeer reindeer)
        {
            lock (ReindeerGroup)
            {
                ReindeerGroup.Add(reindeer);

                if (ReindeerGroup.Count == 9)
                {
                    var awakeMessage = new ReindeerAwakeMessage(ReindeerGroup.ToList());

                    foreach (var reindeerToRemove in awakeMessage.Group)
                    {
                        ReindeerGroup.Remove(reindeerToRemove);
                    }

                    Santa.Awake(awakeMessage);
                }
            }
        }
Esempio n. 2
0
        internal void Meet(Elve elve)
        {
            lock (ElveGroup)
            {
                ElveGroup.Add(elve);

                lock (ReindeerGroup)
                {
                    if (ElveGroup.Count >= 3 && ReindeerGroup.Count < 9)
                    {
                        var awakeMessage = new ElveAwakeMessage(ElveGroup.Take(3).ToList());

                        foreach (var elveToRemove in awakeMessage.Group)
                        {
                            ElveGroup.Remove(elveToRemove);
                        }

                        Santa.Awake(awakeMessage);
                    }
                }
            }
        }