Example #1
0
        private Mogo.Util.PackageInfo GetPackageInfo(FileStream fileStream, long fileSize)
        {
            Mogo.Util.PackageInfo info = new Mogo.Util.PackageInfo();
            if (fileSize < Mogo.Util.PackageInfo.GetPackageSize())
            {
                return(new Mogo.Util.PackageInfo());
            }
            fileStream.Position = fileSize - Mogo.Util.PackageInfo.GetPackageSize();
            byte[] buffer = new byte[Mogo.Util.PackageInfo.GetPackageSize()];
            fileStream.Read(buffer, 0, Mogo.Util.PackageInfo.GetPackageSize());
            int index = 0;

            info.IndexOffset = EncodeDecoder.DecodeUInt32(buffer, ref index);
            return(info);
        }
Example #2
0
 private void GetIndexInfo(long fileSize, bool needBackUpIndex)
 {
     lock (m_locker)
     {
         this.m_packageInfo = this.GetPackageInfo(this.m_fileStream, fileSize);
         if ((this.m_packageInfo != null) && (this.m_packageInfo.IndexOffset != 0))
         {
             int    count  = (int)((fileSize - Mogo.Util.PackageInfo.GetPackageSize()) - this.m_packageInfo.IndexOffset);
             byte[] buffer = new byte[count];
             this.m_fileStream.Position = this.m_packageInfo.IndexOffset;
             this.m_fileStream.Read(buffer, 0, count);
             this.LoadIndexInfo(buffer, needBackUpIndex);
         }
     }
 }
Example #3
0
        private bool CheckBackUpIndex()
        {
            string path = Path.Combine(Path.GetDirectoryName(this.m_fileFullName), this.BACK_UP).Replace(@"\", "/");

            if (File.Exists(path))
            {
                FileInfo   info       = new FileInfo(path);
                long       length     = info.Length;
                FileStream fileStream = File.Open(path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
                this.m_packageInfo = this.GetPackageInfo(fileStream, length);
                if ((this.m_packageInfo != null) && (this.m_packageInfo.IndexOffset != 0))
                {
                    int    count  = ((int)length) - Mogo.Util.PackageInfo.GetPackageSize();
                    byte[] buffer = new byte[count];
                    fileStream.Position = 0L;
                    fileStream.Read(buffer, 0, count);
                    this.LoadIndexInfo(buffer, false);
                }
                return(true);
            }
            return(false);
        }