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)); } }
public static MessagePageId GetFirstPageIdOnCompressedPage(this ClusterPageId clusterPage) { return(new MessagePageId(clusterPage.Value * PagesOnCluster)); }
public static PagesCluster CreatePagesCluster(this IAzurePageBlob azurePageBlob, string topicId, ClusterPageId clusterPageId) { return(new PagesCluster(azurePageBlob, clusterPageId, topicId)); }
public PagesCluster(IAzurePageBlob azurePageBlob, ClusterPageId clusterPageId, string topicId) { TopicId = topicId; AzurePageBlob = azurePageBlob; ClusterPageId = clusterPageId; }
public bool EqualsWith(ClusterPageId clusterPageId) { return(clusterPageId.Value == Value); }
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); } }