40 lines
986 B
Python
40 lines
986 B
Python
# -*- coding: utf-8 -*-
|
|
|
|
from monitor import Monitor
|
|
|
|
import traceback
|
|
|
|
try:
|
|
import xbmc, xbmcgui
|
|
except:
|
|
pass
|
|
|
|
from platformcode import config
|
|
LIBTORRENT_PATH = config.get_setting("libtorrent_path", server="torrent", default='')
|
|
|
|
from servers import torrent as torr
|
|
lt, e, e1, e2 = torr.import_libtorrent(LIBTORRENT_PATH)
|
|
|
|
|
|
class Dispatcher(Monitor):
|
|
def __init__(self, client):
|
|
super(Dispatcher, self).__init__(client)
|
|
|
|
def do_start(self, th, ses):
|
|
self._th = th
|
|
self._ses = ses
|
|
self.start()
|
|
|
|
def run(self):
|
|
if not self._ses:
|
|
raise Exception('Invalid state, session is not initialized')
|
|
|
|
while self.running:
|
|
a = self._ses.wait_for_alert(1000)
|
|
if a:
|
|
alerts = self._ses.pop_alerts()
|
|
for alert in alerts:
|
|
with self.lock:
|
|
for cb in self.listeners:
|
|
cb(lt.alert.what(alert), alert)
|