package com.limegroup.bittorrent; import java.util.Iterator; import org.limewire.bittorrent.Torrent; import org.limewire.bittorrent.TorrentManager; /** * Iterates through the torrents periodically saving a fastresume file for each * file. */ public class TorrentResumeDataScheduler implements Runnable { private final TorrentManager torrentManager; private Iterator<Torrent> torrentIterator; public TorrentResumeDataScheduler(TorrentManager torrentManager) { this.torrentManager = torrentManager; torrentIterator = torrentManager.getTorrents().iterator(); } @Override public void run() { torrentManager.getLock().lock(); try { if (!torrentIterator.hasNext()) { torrentIterator = torrentManager.getTorrents().iterator(); if (!torrentIterator.hasNext()) { return; } } Torrent torrent = torrentIterator.next(); if (torrent.isValid() && torrent.hasMetaData()) { torrent.saveFastResumeData(); } } finally { torrentManager.getLock().unlock(); } } }