public void LoadBtree(Context context, long offset) { var data = context.RawStream; data.Position = offset + context.SuperBlock.Blocksize * (long)Root; if (Level == 1) { RootInodeBtree = new BTreeInodeLeaf(SbVersion); } else { RootInodeBtree = new BTreeInodeNode(SbVersion); } var buffer = StreamUtilities.ReadExact(data, (int)context.SuperBlock.Blocksize); RootInodeBtree.ReadFrom(buffer, 0); }
public override void LoadBtree(AllocationGroup ag) { Children = new Dictionary <uint, BtreeHeader>(NumberOfRecords); for (int i = 0; i < NumberOfRecords; i++) { BtreeHeader child; if (Level == 1) { child = new BTreeInodeLeaf(base.SbVersion); } else { child = new BTreeInodeNode(base.SbVersion); } var data = ag.Context.RawStream; data.Position = (Pointer[i] * ag.Context.SuperBlock.Blocksize) + ag.Offset; var buffer = StreamUtilities.ReadFully(data, (int)ag.Context.SuperBlock.Blocksize); child.ReadFrom(buffer, 0); child.LoadBtree(ag); Children.Add(Keys[i], child); } }