More queue updates.
This commit is contained in:
parent
cd2bfe8a62
commit
81606e3e67
|
@ -155,6 +155,10 @@ class Torrent:
|
||||||
if self.handle.is_paused():
|
if self.handle.is_paused():
|
||||||
state = "Paused"
|
state = "Paused"
|
||||||
|
|
||||||
|
if state == "Queued":
|
||||||
|
component.get("TorrentManager").append_not_state_paused(self.torrent_id)
|
||||||
|
self.pause()
|
||||||
|
|
||||||
self.state = state
|
self.state = state
|
||||||
|
|
||||||
def get_eta(self):
|
def get_eta(self):
|
||||||
|
@ -300,6 +304,10 @@ class Torrent:
|
||||||
|
|
||||||
def pause(self):
|
def pause(self):
|
||||||
"""Pause this torrent"""
|
"""Pause this torrent"""
|
||||||
|
if self.state == "Queued":
|
||||||
|
self.set_state("Paused")
|
||||||
|
return True
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.handle.pause()
|
self.handle.pause()
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
|
@ -310,8 +318,8 @@ class Torrent:
|
||||||
|
|
||||||
def resume(self):
|
def resume(self):
|
||||||
"""Resumes this torrent"""
|
"""Resumes this torrent"""
|
||||||
if self.state != "Paused":
|
#if not self.status.paused:
|
||||||
return False
|
# return False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.handle.resume()
|
self.handle.resume()
|
||||||
|
|
|
@ -108,6 +108,9 @@ class TorrentManager(component.Component):
|
||||||
# Create the torrents dict { torrent_id: Torrent }
|
# Create the torrents dict { torrent_id: Torrent }
|
||||||
self.torrents = {}
|
self.torrents = {}
|
||||||
|
|
||||||
|
# List of torrents to note set state 'Paused' on lt alert
|
||||||
|
self.not_state_paused = []
|
||||||
|
|
||||||
# Register set functions
|
# Register set functions
|
||||||
self.config.register_set_function("max_connections_per_torrent",
|
self.config.register_set_function("max_connections_per_torrent",
|
||||||
self.on_set_max_connections_per_torrent)
|
self.on_set_max_connections_per_torrent)
|
||||||
|
@ -161,6 +164,12 @@ class TorrentManager(component.Component):
|
||||||
"""Returns a list of torrent_ids"""
|
"""Returns a list of torrent_ids"""
|
||||||
return self.torrents.keys()
|
return self.torrents.keys()
|
||||||
|
|
||||||
|
def append_not_state_paused(self, torrent_id):
|
||||||
|
"""Appends to a list of torrents that we will not set state Paused to
|
||||||
|
when we receive the paused alert from libtorrent. The torrents are removed
|
||||||
|
from this list once we receive the alert they have been paused in libtorrent."""
|
||||||
|
self.not_state_paused.append(torrent_id)
|
||||||
|
|
||||||
def add(self, filename, filedump=None, options=None, total_uploaded=0,
|
def add(self, filename, filedump=None, options=None, total_uploaded=0,
|
||||||
trackers=None, queue=-1, save_state=True):
|
trackers=None, queue=-1, save_state=True):
|
||||||
"""Add a torrent to the manager and returns it's torrent_id"""
|
"""Add a torrent to the manager and returns it's torrent_id"""
|
||||||
|
@ -547,7 +556,11 @@ class TorrentManager(component.Component):
|
||||||
# Get the torrent_id
|
# Get the torrent_id
|
||||||
torrent_id = str(alert.handle.info_hash())
|
torrent_id = str(alert.handle.info_hash())
|
||||||
# Set the torrent state
|
# Set the torrent state
|
||||||
|
if not torrent_id in self.not_state_paused:
|
||||||
self.torrents[torrent_id].set_state("Paused")
|
self.torrents[torrent_id].set_state("Paused")
|
||||||
|
else:
|
||||||
|
self.not_state_paused.remove(torrent_id)
|
||||||
|
|
||||||
# Write the fastresume file
|
# Write the fastresume file
|
||||||
self.torrents[torrent_id].write_fastresume()
|
self.torrents[torrent_id].write_fastresume()
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,7 @@ class TorrentQueue(component.Component):
|
||||||
else:
|
else:
|
||||||
to_unqueue = queued_seeding
|
to_unqueue = queued_seeding
|
||||||
for (pos, torrent_id) in to_unqueue:
|
for (pos, torrent_id) in to_unqueue:
|
||||||
self.torrents[torrent_id].set_state("Seeding")
|
self.torrents[torrent_id].resume()
|
||||||
|
|
||||||
if self.config["max_active_downloading"] > -1:
|
if self.config["max_active_downloading"] > -1:
|
||||||
if len(downloading) > self.config["max_active_downloading"]:
|
if len(downloading) > self.config["max_active_downloading"]:
|
||||||
|
@ -102,7 +102,7 @@ class TorrentQueue(component.Component):
|
||||||
else:
|
else:
|
||||||
to_unqueue = queued_downloading
|
to_unqueue = queued_downloading
|
||||||
for (pos, torrent_id) in to_unqueue:
|
for (pos, torrent_id) in to_unqueue:
|
||||||
self.torrents[torrent_id].set_state("Downloading")
|
self.torrents[torrent_id].resume()
|
||||||
|
|
||||||
def set_size(self, size):
|
def set_size(self, size):
|
||||||
"""Clear and set the self.queue list to the length of size"""
|
"""Clear and set the self.queue list to the length of size"""
|
||||||
|
|
Loading…
Reference in New Issue