示例#1
0
 private void removedCallback(string key, Object value, CacheItemRemovedReason reason)
 {
     if (reason == CacheItemRemovedReason.Expired)
     {
         DiscussionLoadRoll obj = (DiscussionLoadRoll)value;
         //insertNew(key, obj.BoardId, obj.DiscussionId);
     }
 }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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));
        }