internal void WriteBackupElement(ulong fileNumber, byte type, long pos, byte[] data)
{
lock (lock_ibp_fs)
{
this.GetFileStream();
uint size = 0;
byte[] toSave = null;
switch (type)
{
case 0:
case 1:
//8(fileNumber)+1(type)+8(position)+data.Length
size = Convert.ToUInt32(8 + 1 + 8 + data.Length);
toSave = size.To_4_bytes_array_BigEndian().ConcatMany(fileNumber.To_8_bytes_array_BigEndian(),
new byte[] { type },
pos.To_8_bytes_array_BigEndian(),
data);
break;
case 2:
//Now we save new information into rollback
size = Convert.ToUInt32(8 + 1 + 8 + data.Length);
toSave = size.To_4_bytes_array_BigEndian().ConcatMany(fileNumber.To_8_bytes_array_BigEndian(),
new byte[] { 2 },
((long)0).To_8_bytes_array_BigEndian(),
data);
break;
case 3: //recreate table file
case 5: //removing complete table
//8(fileNumber)+1(type)
size = 9;
toSave = size.To_4_bytes_array_BigEndian()
.ConcatMany(
fileNumber.To_8_bytes_array_BigEndian(),
new byte[] { type }
);
break;
}
wasWritten = true;
fs.Write(toSave, 0, toSave.Length);
}
//Console.WriteLine(String.Format("{0}> FN: {1} - {2}; at {3} q {4}", writeTime.ToString("dd.MM.yyyy HH:mm:ss"), fileNumber, type.ToString(), pos.ToString(),
// data.Length.ToString()));
}