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; } }
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); }