public BeaconEventType ResolveBeaconState(Beacon b)
 {
     lock (KnownBeacons)
     {
         if (KnownBeacons.ContainsKey(b))
         {
             KnownBeacons[b] = DateTimeOffset.Now;
             return(BeaconEventType.None);
         }
         KnownBeacons[b] = DateTimeOffset.Now;
     }
     return(BeaconEventType.Enter);
 }
        public List <Beacon> ResolveBeaconExits()
        {
            lock (KnownBeacons)
            {
                DateTimeOffset temp          = DateTimeOffset.Now;
                DateTimeOffset end           = DateTimeOffset.Now.AddMilliseconds(-ExitTimeout);
                List <Beacon>  removeBeacons = new List <Beacon>();
                foreach (KeyValuePair <Beacon, DateTimeOffset> beacon in KnownBeacons)
                {
                    if (beacon.Value < end)
                    {
                        removeBeacons.Add(beacon.Key);
                    }
                }

                foreach (Beacon b in removeBeacons)
                {
                    KnownBeacons.Remove(b);
                }
                return(removeBeacons);
            }
        }