private static void ShrinkNormal(Siaqodb siaqodb) { var allOrderByPos = (from RawdataInfo ri in siaqodb where ri.IsFree == false orderby ri.Position select ri).ToList(); ISqoFile file = siaqodb.GetRawFile(); MemoryStream memStream = new MemoryStream(); MemoryStream memStreamNew = new MemoryStream(); byte[] fullFile = new byte[file.Length]; file.Read(0, fullFile); memStream.Write(fullFile, 0, fullFile.Length); for (int i = 0; i < allOrderByPos.Count; i++) { RawdataInfo rawi = allOrderByPos[i]; byte[] actualBytes = new byte[rawi.Length]; memStream.Seek(rawi.Position, SeekOrigin.Begin); memStream.Read(actualBytes, 0, actualBytes.Length); if (i == 0) { rawi.Position = 0; memStreamNew.Write(actualBytes, 0, actualBytes.Length); } else { RawdataInfo prev = allOrderByPos[i - 1]; rawi.Position = prev.Position + prev.Length; memStreamNew.Seek(rawi.Position, SeekOrigin.Begin); memStreamNew.Write(actualBytes, 0, actualBytes.Length); } } for (int i = 0; i < allOrderByPos.Count; i++) { siaqodb.StoreObject(allOrderByPos[i]); } file.Length = memStreamNew.Length; file.Write(0, memStreamNew.ToArray()); }
public void SerializeType(SqoTypeInfo ti) { file.Write(0, SerializeTypeToBuffer(ti)); }
public int SaveTransactionalObject(byte[] objBytes, long pos) { file.Write(pos, objBytes); return(objBytes.Length); }