Example #1
0
        internal IHttpHandler Details(string key)
        {
            if (String.IsNullOrEmpty(key))
            {
                return(base.Json(new JsonErrorViewModel {
                    Success = false, Message = "Missing cache key."
                }, HttpStatusCode.BadRequest));
            }

            var cache = new HttpCacheShim() as ICache;
            var entry = cache.GetEntry(key);

            if (entry == default(CacheEntry))//better check?
            {
                return(base.Json(new JsonErrorViewModel {
                    Success = false, Message = "Invalid cache key."
                }, HttpStatusCode.BadRequest));
            }

            var model = new DetailsViewModel(entry)
            {
                Success = true
            };

            return(base.Json(model));
        }
Example #2
0
        internal IHttpHandler Combined()
        {
            var cache = new HttpCacheShim() as ICache;
            var model = new CombinedViewModel(cache, HttpContext.Current)
            {
                Success = true
            };

            return(base.Json(model));
        }
Example #3
0
        internal IHttpHandler Cache()
        {
            var cache = new HttpCacheShim();
            var model = new CacheViewModel(cache)
            {
                Success = true
            };

            return(base.Json(model));
        }
Example #4
0
        //combine with delete? not sure how we would want to handle that
        //HttpPost
        internal IHttpHandler Clear()
        {
            if (!ValidateTokenHeader())
            {
                return(base.Json(new JsonErrorViewModel {
                    Success = false, Message = "Invalid verification token."
                }, HttpStatusCode.BadRequest));
            }

            var cache = new HttpCacheShim();

            cache.Clear();
            return(base.Json(new ClearViewModel {
                Success = true
            }));
        }
        public virtual Tuple <object, bool> Fill(FreshnessRequest freshness)
        {
            HttpCacheShim.Log("Fill", () => "(" + freshness + ") " + Name);

            var keyString = Name;
            var startTime = DateTime.UtcNow;
            var started   = s_RunningQueries.TryAdd(keyString, startTime);

            try
            {
                if (started)
                {
                    var backfilling = freshness == FreshnessRequest.AsyncBackfill;

                    if (backfilling)
                    {
                        if (NumberOfRefillsRemaining > 0)
                        {
                            NumberOfRefillsRemaining--;
                        }

                        HttpCacheShim.Log("Refiller", () => "backfilling " + Name + " remaining " + NumberOfRefillsRemaining);
                    }

                    var result = Filler(freshness);
                    return(Tuple.Create(result, false));
                }
                else
                {
                    HttpCacheShim.Log("Refiller", () => keyString + " already inflight");
                    return(Tuple.Create(default(object), true));
                }
            }
            finally
            {
                if (started)
                {
                    var endTime = DateTime.UtcNow;
                    s_RunningQueries.TryRemove(keyString, out startTime);
                    HttpCacheShim.Log("Refiller", () => keyString + " @" + startTime + " [" + (endTime - startTime) + "]");
                }
            }
        }
Example #6
0
        //HttpPost
        internal IHttpHandler Delete(string key, bool prefix = false)
        {
            if (!ValidateTokenHeader())
            {
                return(base.Json(new JsonErrorViewModel {
                    Success = false, Message = "Invalid verification token."
                }, HttpStatusCode.BadRequest));
            }

            if (String.IsNullOrEmpty(key))
            {
                return(base.Json(new JsonErrorViewModel {
                    Success = false, Message = "Missing cache key or prefix."
                }, HttpStatusCode.BadRequest));
            }

            var cache = new HttpCacheShim();

            cache.Clear(key, prefix);
            return(base.Json(new DeleteViewModel(cache)
            {
                Success = true
            }));
        }
 public virtual void Put(object value)
 {
     HttpCacheShim.Log("Put", () => "[" + Name + "] " + value);
     Putter(this, value);
 }