private static async Task RenderPageInternalAsync(Tree tree, TreePageSafe page, TextWriter sw, string text, bool open) { await sw.WriteLineAsync( string.Format("<ul><li><input type='checkbox' id='page-{0}' {3} /><label for='page-{0}'>{4}: Page {0:#,#;;0} - {1} - {2:#,#;;0} entries {5}</label><ul>", page.PageNumber, page.IsLeaf ? "Leaf" : "Branch", page.NumberOfEntries, open ? "checked" : "", text, page.IsCompressed ? $"(Compressed ({page.NumberOfCompressedEntries} entries [uncompressed/compressed: {page.UncompressedSize}/{page.CompressedSize}])" : string.Empty)); for (int i = 0; i < page.NumberOfEntries; i++) { var nodeHeader = page.GetNode(i); string key = nodeHeader.Key; if (page.IsLeaf) { await sw.WriteAsync(string.Format("<li>{0} {1} - size: {2:#,#}</li>", key, nodeHeader.Flags, nodeHeader.GetDataSize())); } else { var pageNum = nodeHeader.PageNumber; if (i == 0) { key = "[smallest]"; } await RenderPageAsync(tree, tree.GetReadOnlyTreePage(pageNum), sw, key, false); } } await sw.WriteLineAsync("</ul></li></ul>"); }
private static Task RenderPageAsync(Tree tree, TreePage page, TextWriter sw, string text, bool open, bool decompress) { var treePage = new TreePageSafe(tree, page); return(RenderPageInternalAsync(tree, treePage, sw, text, open, decompress)); }