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); } }
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); } }