Пример #1
0
    def __init__(self, config, state_dir=None):
        self.config = config
        self.session = None
        self.hooks = Hooks(Path(self.config.path, 'hooks'))
        if state_dir is None:
            self.state_dir = Path(
                Path.home(), '.local', 'share', 'spritzle', 'state')
        else:
            self.state_dir = state_dir
        # TODO check dir for rw, etc
        self.state_dir.mkdir(parents=True, exist_ok=True)
        self.session_stats_future = None
        # A place to keep additional data on torrents, that isn't stored in
        # libtorrent.  This is key'd on info_hash.
        self.torrent_data = {}

        # Store state of outstanding save resume data alerts
        self.resume_data_futures = {}

        self.alert = Alert()
        self.alert.register_handler(
            'session_stats_alert',
            self.on_session_stats_alert
        )
        self.alert.register_handler(
            'status_notification',
            self.on_status_notification_alert
        )
        self.alert.register_handler(
            'save_resume_data_alert',
            self.on_save_resume_data_alert
        )
        self.alert.register_handler(
            'save_resume_data_failed_alert',
            self.on_save_resume_data_failed_alert
        )
        self.alert.register_handler(
            'add_torrent_alert',
            self.on_add_torrent_alert
        )