private HashTableElement GetElementAt(int index)
        {
            byte[]          getResult = _simpleCollectionNextIndex.Get(index);
            HashTableHeader header    = GetHashTableHeader();

            return(HashTableElement.Deserialize(getResult, index, header.KeySize, header.ValueSize));
        }
 public PersistentHashTable(string hashtableName, int tableSize, int keySize, int valueSize, int userHeaderSize)
 {
     _simpleCollectionNextIndex = new PersistentNextSpaceArray(hashtableName, keySize + valueSize, userHeaderSize + GetHeaderSize());
     HashTableHeader header = new HashTableHeader(tableSize, keySize, valueSize);
     _simpleCollectionNextIndex.PutUserHeader(header.Serialize());
     _simpleCollectionNextIndex.Put(tableSize-1, new byte[0]);
 }
        public PersistentHashTable(string hashtableName, int tableSize, int keySize, int valueSize, int userHeaderSize)
        {
            _simpleCollectionNextIndex = new PersistentNextSpaceArray(hashtableName, keySize + valueSize, userHeaderSize + GetHeaderSize());
            HashTableHeader header = new HashTableHeader(tableSize, keySize, valueSize);

            _simpleCollectionNextIndex.PutUserHeader(header.Serialize());
            _simpleCollectionNextIndex.Put(tableSize - 1, new byte[0]);
        }
        public void CtorTest()
        {
            int tableSize = 20;
            int keySize = 5;
            int valueSize = 10;
            HashTableHeader header = new HashTableHeader(tableSize, keySize, valueSize);

            Assert.AreEqual(tableSize, header.TableSize);
            Assert.AreEqual(keySize, header.KeySize);
            Assert.AreEqual(valueSize, header.ValueSize);
        }
        public void SerializeTest()
        {
            int tableSize = 20;
            int keySize = 5;
            int valueSize = 10;
            HashTableHeader header = new HashTableHeader(tableSize, keySize, valueSize);

            byte[] headerBytes = header.Serialize();
            byte[] expected = tableSize.ToBytes().Append(keySize.ToBytes(), valueSize.ToBytes());

            TestHelper.AssertByteArraysAreSame(expected, headerBytes);
        }
 public static int GetHeaderSize()
 {
     return(HashTableHeader.GetHeaderSize());
 }
 private HashTableHeader GetHashTableHeader()
 {
     byte[] fullHeader = _simpleCollectionNextIndex.GetUserHeader();
     byte[] myHeader   = fullHeader.SubArray(0, GetHeaderSize());
     return(HashTableHeader.Deserialize(myHeader));
 }