示例#1
0
        public SequentialPieceRqStrategyOneFile(Metainfo meta, string fileName)
        {
            Metainfo.File file = FindFileInMeta(meta, fileName);
            _initialOffset = CalcFileStartOffset(meta, file) / meta.PieceLength;
            _pieces        = new BitField(meta.PiecesCount);

            _piecesCount = file.Length / meta.PieceLength;
            for (int i = _initialOffset; i < _piecesCount; i++)
            {
                _pieces[i] = false;
            }
        }
示例#2
0
        private int CalcFileStartOffset(Metainfo meta, Metainfo.File file)
        {
            int offset = 0;

            foreach (var metaFile in meta.Files)
            {
                if (file.Path.Last().Equals(metaFile.Path.Last()))
                {
                    break;
                }

                offset += file.Length;
            }

            return(offset);
        }