Пример #1
0
        internal static PresenceCacheItem Query(int id, bool fill = true)
        {
            lock (idToPresenceCache)
            {
                PresenceCacheItem match = null;
                if (idToPresenceCache.TryGetValue(id, out match))
                {
                    totalHits++;
                }
                else
                {
                    totalMisses++;
                }

                if (fill && (match == null || (DateTime.Now - match.LastUpdate).TotalHours > 24))
                {
                    Fill(id);
                }

                return(match);
            }
        }
Пример #2
0
        internal static void Cache(bUserPresence presence)
        {
            lock (idToPresenceCache)
            {
                PresenceCacheItem item = Query(presence.userId, false);

                if (item == null)
                {
                    item = new PresenceCacheItem();

                    cache.Add(item);
                    idToPresenceCache[presence.userId] = item;
                }

                item.Presence   = presence;
                item.LastUpdate = DateTime.Now;

                totalFills++;

                activeQueries.Remove(presence.userId);
            }
        }