コード例 #1
0
ファイル: ObjectSerializer.cs プロジェクト: morecraf/Siaqodb
        public SqoTypeInfo DeserializeSqoTypeInfo(bool loadRealType)
        {
            byte[] headerSizeB = new byte[4];
            file.Read(0, headerSizeB);
            int headerSize = ByteConverter.ByteArrayToInt(headerSizeB);

            byte[] readFullSqoTypeInfo = new byte[headerSize];
            file.Read(0, readFullSqoTypeInfo);
            return(DeserializeSqoTypeInfoFromBuffer(readFullSqoTypeInfo, loadRealType));
        }
コード例 #2
0
        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());
        }
コード例 #3
0
 public void Read(long pos, byte[] buffer)
 {
     file.Read(pos, buffer);
 }