コード例 #1
0
 void CloseAndRemove(ITorrentFileInfo file, ITorrentFileStream s)
 {
     logger.InfoFormatted("Closing and removing: {0}", file.Path);
     Streams.Remove(file);
     UsageOrder.Remove(file);
     s.Dispose();
 }
コード例 #2
0
        void Add(ITorrentFileInfo file, ITorrentFileStream stream)
        {
            logger.InfoFormatted("Opening filestream: {0}", file.FullPath);

            if (MaxStreams != 0 && Streams.Count >= MaxStreams)
            {
                for (int i = 0; i < UsageOrder.Count; i++)
                {
                    if (!Streams[UsageOrder[i]].Rented)
                    {
                        CloseAndRemove(UsageOrder[i], Streams[UsageOrder[i]]);
                        break;
                    }
                }
            }
            Streams.Add(file, stream);
            UsageOrder.Add(file);
        }
コード例 #3
0
 public RentedStream(ITorrentFileStream stream)
 {
     Stream = stream;
     stream?.Rent();
 }
コード例 #4
0
 public RentedStream(ITorrentFileStream stream, ReusableExclusiveSemaphore.Releaser releaser)
 {
     Stream   = stream;
     Releaser = releaser;
 }