save resume data on stop, remove/replace deprecated calls

This commit is contained in:
Victor Shyba 2022-09-09 20:19:19 -03:00
parent df680e7225
commit 7410991123

View file

@ -3,7 +3,6 @@ import binascii
import os import os
import logging import logging
import random import random
from hashlib import sha1
from tempfile import mkdtemp from tempfile import mkdtemp
from typing import Optional, Tuple from typing import Optional, Tuple
@ -59,6 +58,7 @@ class TorrentHandle:
return index return index
def stop_tasks(self): def stop_tasks(self):
self._handle.save_resume_data()
while self.tasks: while self.tasks:
self.tasks.pop().cancel() self.tasks.pop().cancel()
@ -152,13 +152,13 @@ class TorrentSession:
async def add_fake_torrent(self): async def add_fake_torrent(self):
tmpdir = mkdtemp() tmpdir = mkdtemp()
info, btih = _create_fake_torrent(tmpdir) info = _create_fake_torrent(tmpdir)
flags = libtorrent.add_torrent_params_flags_t.flag_seed_mode flags = libtorrent.add_torrent_params_flags_t.flag_seed_mode
handle = self._session.add_torrent({ handle = self._session.add_torrent({
'ti': info, 'save_path': tmpdir, 'flags': flags 'ti': info, 'save_path': tmpdir, 'flags': flags
}) })
self._handles[btih] = TorrentHandle(self._loop, self._executor, handle) self._handles[str(info.info_hash())] = TorrentHandle(self._loop, self._executor, handle)
return btih return str(info.info_hash())
async def bind(self, interface: str = '0.0.0.0', port: int = 10889): async def bind(self, interface: str = '0.0.0.0', port: int = 10889):
settings = { settings = {
@ -172,14 +172,12 @@ class TorrentSession:
self.tasks.append(self._loop.create_task(self.process_alerts())) self.tasks.append(self._loop.create_task(self.process_alerts()))
def stop(self): def stop(self):
while self._handles:
self._handles.popitem()[1].stop_tasks()
while self.tasks: while self.tasks:
self.tasks.pop().cancel() self.tasks.pop().cancel()
self._session.save_state() self._session.save_state()
self._session.pause() self._session.pause()
self._session.stop_dht()
self._session.stop_lsd()
self._session.stop_natpmp()
self._session.stop_upnp()
self._session = None self._session = None
def _pop_alerts(self): def _pop_alerts(self):
@ -271,9 +269,7 @@ def _create_fake_torrent(tmpdir):
file_storage.add_file('tmp', size) file_storage.add_file('tmp', size)
t = libtorrent.create_torrent(file_storage, 0, 4 * 1024 * 1024) t = libtorrent.create_torrent(file_storage, 0, 4 * 1024 * 1024)
libtorrent.set_piece_hashes(t, tmpdir) libtorrent.set_piece_hashes(t, tmpdir)
info = libtorrent.torrent_info(t.generate()) return libtorrent.torrent_info(t.generate())
btih = sha1(info.metadata()).hexdigest()
return info, btih
async def main(): async def main():