예제 #1
0
        public void ExpiringDictionary_GetForKeyAndRefresh_Refreshes()
        {
            using (var map = new ExpiringDictionary <int, string>(10, 1)) {
                map.Add(1, "X");
                HeartbeatTick();

                _Clock.AddMilliseconds(10);
                Assert.AreEqual("X", map.GetForKeyAndRefresh(1));

                HeartbeatTick();
                Assert.AreEqual(1, map.Count);
            }
        }
예제 #2
0
        /// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="icao"></param>
        /// <param name="registration"></param>
        /// <param name="maxThumbnails"></param>
        /// <returns></returns>
        public WebRequestResult <AirportDataThumbnailsJson> GetThumbnails(string icao, string registration, int maxThumbnails)
        {
            var thumbnailKey    = new ThumbnailKey(icao, maxThumbnails);
            var cachedThumbnail = _ThumbnailCache.GetForKeyAndRefresh(thumbnailKey);

            if (cachedThumbnail != null)
            {
                cachedThumbnail.LastAccessTimeUtc = DateTime.UtcNow;
            }
            else
            {
                cachedThumbnail = new CachedThumbnail()
                {
                    LastAccessTimeUtc = DateTime.UtcNow,
                    Thumbnail         = RequestThumbnails(icao, registration, maxThumbnails),
                };
                _ThumbnailCache.UpsertAndRefresh(thumbnailKey, cachedThumbnail);
            }

            return(cachedThumbnail.Thumbnail);
        }