コード例 #1
0
        public static IEnumerable <MessagePageId> GetMessagePages(ClusterPageId clusterPage)
        {
            var startIndex = clusterPage.Value * PagesOnCluster;
            var endIndex   = startIndex + PagesOnCluster;

            for (var i = startIndex; i < endIndex; i++)
            {
                yield return(new MessagePageId(i));
            }
        }
コード例 #2
0
 public static MessagePageId GetFirstPageIdOnCompressedPage(this ClusterPageId clusterPage)
 {
     return(new MessagePageId(clusterPage.Value * PagesOnCluster));
 }
コード例 #3
0
 public static PagesCluster CreatePagesCluster(this IAzurePageBlob azurePageBlob, string topicId,
                                               ClusterPageId clusterPageId)
 {
     return(new PagesCluster(azurePageBlob, clusterPageId, topicId));
 }
コード例 #4
0
 public PagesCluster(IAzurePageBlob azurePageBlob, ClusterPageId clusterPageId, string topicId)
 {
     TopicId       = topicId;
     AzurePageBlob = azurePageBlob;
     ClusterPageId = clusterPageId;
 }
コード例 #5
0
 public bool EqualsWith(ClusterPageId clusterPageId)
 {
     return(clusterPageId.Value == Value);
 }
コード例 #6
0
        private int GetPageTocIndex(MessagePageId pageId)
        {
            var firstPageNoOnCompressedPage = ClusterPageId.GetFirstPageIdOnCompressedPage();

            return((int)(pageId.Value - firstPageNoOnCompressedPage.Value));
        }
        public static PagesCluster FindInCache(this List <PagesCluster> cache, string topicId, ClusterPageId clusterPageId)
        {
            lock (cache)
            {
                var result = cache.FirstOrDefault(itm => itm.TopicId == topicId && itm.ClusterPageId.EqualsWith(clusterPageId));

                if (result == null)
                {
                    return(null);
                }

                var index = cache.IndexOf(result);
                if (index != 0)
                {
                    cache.Remove(result);
                    cache.Insert(0, result);
                }

                return(result);
            }
        }