private void removedCallback(string key, Object value, CacheItemRemovedReason reason) { if (reason == CacheItemRemovedReason.Expired) { DiscussionLoadRoll obj = (DiscussionLoadRoll)value; //insertNew(key, obj.BoardId, obj.DiscussionId); } }
public void Notify(string board_id, string discussion_id) { string key = SandId.CombineId("discussionload1", board_id, discussion_id); DiscussionLoadRoll obj = (DiscussionLoadRoll)HttpRuntime.Cache.Remove(key); if (obj != null) { insertNew(key, board_id, discussion_id); } }
private DiscussionLoadRoll insertNew(string key, string board_id, string discussion_id) { DiscussionLoadRoll obj = new DiscussionLoadRoll(board_id, discussion_id); // if concurrency happens, this will be done more than once. HttpRuntime.Cache.Insert(key, obj, null, DateTime.Now.AddSeconds(HeartsConfiguration.DEFAULT_CACHE_SECONDS), Cache.NoSlidingExpiration, CacheItemPriority.Default, removedCallback); // expires after some time for multi-node synchronization (unreliable). return(obj); }
public DiscussionLoadRoll Get(string board_id, string discussion_id) { string key = SandId.CombineId("discussionload1", board_id, discussion_id); DiscussionLoadRoll obj = (DiscussionLoadRoll)HttpRuntime.Cache.Get(key); if (obj == null) { obj = insertNew(key, board_id, discussion_id); } return(obj); }
public override void ExecuteResult(ControllerContext context) { //string board_name = Warehouse.BsMapPond.Get().GetBoardName(boardId); //string partition_key = SandId.CombineId(boardId, discussionId); TextWriter writer = context.HttpContext.Response.Output; //writer.WriteForCrawler("h1", board_name); DiscussionLoadRoll dlr = Warehouse.DiscussionLoadPond.Get(boardId, discussionId); writer.Write(dlr.Output); writer.WriteForCrawler("var", Util.DateTimeToString(dlr.LastModifiedTime, 6)); }