Beispiel #1
0
        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));
            }
        }