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 )