コード例 #1
0
 public IEnumerable <PogoPoke> Execute(GetCurrentPokesRequest request)
 {
     using (var db = databaseFactory.CreateNew())
     {
         var date = DateTime.UtcNow.AddMinutes(-61);
         return(db.PogoPokes.Where(x => x.Finished >= date && x.MapId == request.MapId).ToList());
     }
 }
コード例 #2
0
        public ConcurrentDictionary <ulong, PogoPoke> Execute(GetCurrentPokesRequest request)
        {
            if (cache.TryGetValue(request.MapId, out var result))
            {
                return(result);
            }


            var pokelist = new ConcurrentDictionary <ulong, PogoPoke>();
            var pokes    = this.getCurrentPokesQuery.Execute(new DataAccess.Queries.Pokes.GetCurrentPokesRequest(MapId: request.MapId));

            foreach (var poke in pokes)
            {
                var hash = Models.Utils.S2.GetPokeCell(poke);

                if (!pokelist.TryAdd(hash, poke))
                {
                    if (!pokelist.TryGetValue(hash, out var oldPoke))
                    {
                        bool pleaseCheckWhatHappend = false;
                    }

                    if (poke.Finished > oldPoke.Finished)
                    {
                        if (!pokelist.TryUpdate(hash, poke, oldPoke))
                        {
                            bool pleaseCheckWhatHappend = false;
                        }
                    }
                }
            }

            if (!cache.TryAdd(request.MapId, pokelist))
            {
                if (cache.TryGetValue(request.MapId, out var result2))
                {
                    return(result2);
                }

                bool pleaseCheckWhatHappend = false;
            }

            return(pokelist);
        }