private byte[] DecoderRequests(long pos, int len) { if (streamType == StreamType.FILE) { byte[] data = new byte[len]; lock (fsStream) { fsStream.Seek(pos, SeekOrigin.Begin); fsStream.Read(data, 0, len); } return(data); } else { if (torrent.data.progress.GetFirst0(FilePosToPiece(pos), FilePosToPiece(pos + len)) == -1) { return(torrent.data.files[fileIndex].Read(pos, len)); } tsStream.DeleteFocusPoints(); CreateFocusPoint(pos, len); while (torrent.data.progress.GetFirst0(FilePosToPiece(pos), FilePosToPiece(pos + len)) != -1) { Thread.Sleep(20); } //Log($"[DD] [REQUEST] [POS: {pos}] [LEN: {len}] [PIECES: {FilePosToPiece(pos)} - {FilePosToPiece(pos + len)}]"); return(torrent.data.files[fileIndex].Read(pos, len)); } }