示例#1
0
        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();
        }
示例#2
0
 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();
 }