private ODocument ParseDocument(BinaryReader reader)
{
ODocument document = null;
short classId = reader.ReadInt16EndianAware();
if (classId == -2) // NULL
{
}
else if (classId == -3) // record id
{
ORID orid = new ORID();
orid.ClusterId = reader.ReadInt16EndianAware();
orid.ClusterPosition = reader.ReadInt64EndianAware();
document = new ODocument();
document.ORID = orid;
document.OClassId = classId;
}
else
{
ORecordType type = (ORecordType)reader.ReadByte();
ORID orid = new ORID();
orid.ClusterId = reader.ReadInt16EndianAware();
orid.ClusterPosition = reader.ReadInt64EndianAware();
int version = reader.ReadInt32EndianAware();
int recordLength = reader.ReadInt32EndianAware();
byte[] rawRecord = reader.ReadBytes(recordLength);
document = RecordSerializer.Deserialize(orid, version, type, classId, rawRecord);
}
return document;
}
}