private void Initialize() { //fill primary area with empty pages //set overflow area address long addrI = 0L, addrM = 0L; try { File.Delete("meta"); } catch { } IndexUnit.Init(true); var firstMainPage = new FilePage { Address = addrM++, Count = 1 }; firstMainPage.Entries[0] = new Tuple <Record, long>(new Record(), -1); MainWriter.WritePage(firstMainPage); MainPages = 1; MainRecordCount = 1; OverflowAddress = MainWriter.Writer.Position; OverflowFirstPageNumber = MainReader.PageNumberFromAddress(MainWriter.Writer.Position); var newPage = new FilePage { Address = addrM }; MainWriter.WritePage(newPage); OverflowEndAddress = MainWriter.Writer.Position; OverflowPages = 1; MainWriter.Reset(); Program.MainWrites = 0L; MetaData.Save(); IndexUnit.WriteIndex(); }
public static void Read() { Reader.BaseStream.Position = 0; Index.MainPages = Reader.ReadInt64(); Index.MainRecordCount = Reader.ReadInt64(); Index.OverflowAddress = Reader.ReadInt64(); Index.OverflowFirstPageNumber = MainReader.PageNumberFromAddress(Index.OverflowAddress); Index.OverflowPages = Reader.ReadInt64(); Index.OverflowRecordCount = Reader.ReadInt64(); Index.Alpha = Reader.ReadDouble(); Index.MainPageSize = Reader.ReadInt32(); }