diff --git a/deluge/core/torrentmanager.py b/deluge/core/torrentmanager.py index b0b230fd4..6346f3241 100644 --- a/deluge/core/torrentmanager.py +++ b/deluge/core/torrentmanager.py @@ -196,6 +196,8 @@ class TorrentManager(component.Component): self.on_alert_metadata_received) self.alerts.register_handler("file_error_alert", self.on_alert_file_error) + self.alerts.register_handler("file_completed_alert", + self.on_alert_file_completed) def start(self): # Get the pluginmanager reference @@ -1020,3 +1022,9 @@ class TorrentManager(component.Component): except: return torrent.update_state() + + def on_alert_file_completed(self, alert): + log.debug("file_completed_alert: %s", alert.message()) + torrent_id = str(alert.handle.info_hash()) + component.get("EventManager").emit( + TorrentFileCompletedEvent(torrent_id, alert.index)) diff --git a/deluge/event.py b/deluge/event.py index e36913bd9..42899900b 100644 --- a/deluge/event.py +++ b/deluge/event.py @@ -164,6 +164,22 @@ class TorrentResumedEvent(DelugeEvent): """ self._args = [torrent_id] +class TorrentFileCompletedEvent(DelugeEvent): + """ + Emitted when a file completes. + + This will only work with libtorrent 0.15 or greater. + + """ + def __init__(self, torrent_id, index): + """ + :param torrent_id: the torrent_id + :type torrent_id: string + :param index: the file index + :type index: int + """ + self._args = [torrent_id, index] + class NewVersionAvailableEvent(DelugeEvent): """ Emitted when a more recent version of Deluge is available.