public void Load(byte[] serialization)
{
int index = 0;
int byteCount = serialization.Length;
if (this.values.Count != 0 || this.keys.Count != 0)
{
throw new BplusTreeException("load into nonempty xBucket not permitted");
}
while (index < byteCount)
{
// get key prefix and key
int keylength = BufferFile.Retrieve(serialization, index);
index += BufferFile.INTSTORAGE;
byte[] keybytes = new byte[keylength];
Array.Copy(serialization, index, keybytes, 0, keylength);
string keystring = BplusTree.BytesToString(keybytes);
index += keylength;
// get value prefix and value
int valuelength = BufferFile.Retrieve(serialization, index);
index += BufferFile.INTSTORAGE;
byte[] valuebytes = new byte[valuelength];
Array.Copy(serialization, index, valuebytes, 0, valuelength);
// record new key and value
this.keys.Add(keystring);
this.values.Add(valuebytes);
index += valuelength;
}
if (index != byteCount)
{
throw new BplusTreeException("bad byte count in serialization " + byteCount);
}
}