Beispiel #1
0
        public Usage Count_Empty_Slots()
        {
            int  invalid   = 0;
            int  valid     = 0;
            int  blockSize = _node_Factory.Size_In_Bytes(3);
            long position  = Index_Stream.Position;

            Index_Stream.Seek(8, SeekOrigin.Begin);
            var buffer = new byte[blockSize];

            while (Index_Stream.Read(buffer, 0, buffer.Length) > 0)
            {
                var node = _node_Factory.From_Bytes(buffer, 3);
                if (node.IsValid)
                {
                    valid++;
                }
                else
                {
                    invalid++;
                }
            }

            int used   = valid * blockSize;
            int wasted = invalid * blockSize;

            Index_Stream.Seek(position, SeekOrigin.Begin);
            return(new Usage {
                Invalid = invalid, Valid = valid
            });
        }
        protected Node <T> Read_Node(long address)
        {
            var buffer = new byte[_block_Size];

            Index_Stream.Seek(address, SeekOrigin.Begin);
            Index_Stream.Read(buffer, 0, buffer.Length);

            return(_node_Factory.From_Bytes(buffer, Order));
        }