def __init__(self, db, dbAuth): QtCore.QObject.__init__(self) self.db = db self.dbAuth = dbAuth self.connecter = Connecter(db, dbAuth) self.counter = 0 self.pid = None self.serverMeta = None self._launchConnecter()
class Checker(QtCore.QObject): def __init__(self, db, dbAuth): QtCore.QObject.__init__(self) self.db = db self.dbAuth = dbAuth self.connecter = Connecter(db, dbAuth) self.counter = 0 self.pid = None self.serverMeta = None self._launchConnecter() def timerEvent(self, event): goodIp, ip = self._checkConnection() if not goodIp: p = subprocess.Popen(['./onFailed.sh', ip], shell=True) p.wait() self.counter += 1 if self.counter > 2: self._stopConnecter(True) self._launchConnecter() else: p = subprocess.Popen(['./onSucceed.sh', ip], shell=True) p.wait() self.counter = 0 def _checkConnection(self): ips = getInterfaceIp('tun0') if ips is None or len(ips) == 0: return False ipso = self.dbAuth.select(['ip'], 'addr') print 'ip:\n{%s} = {%s}' % (repr(ips), repr(ipso)) ip = getMyIp() return (ip != ipso[0], ip) def _launchConnecter(self): if self.pid is not None: self._stopConnecter() self.pid, self.serverMeta = self.connecter.connect() def _stopConnecter(self, updateServer = False): if self.pid is not None: os.kill(self.pid, signal.SIGKILL) rowid, failed = self.serverMeta self.db.processQueries([('UPDATE servers SET failed=:failed WHERE ROWID=:rowid', {':rowid': rowid, ':failed': int(failed) + 1})]) self.pid = None self.serverMeta = None
max_slice_length = config['max_slice_length'], max_rate_period = config['max_rate_period'], fudge = config['upload_rate_fudge']): return Upload(connection, choker, storagewrapper, max_slice_length, max_rate_period, fudge) ratemeasure = RateMeasure(storagewrapper.get_amount_left()) rm[0] = ratemeasure.data_rejected picker = PiecePicker(len(pieces), config['rarest_first_cutoff']) for i in xrange(len(pieces)): if storagewrapper.do_I_have(i): picker.complete(i) downloader = Downloader(storagewrapper, picker, config['request_backlog'], config['max_rate_period'], len(pieces), downmeasure, config['snub_time'], ratemeasure.data_came_in) connecter = Connecter(make_upload, downloader, choker, len(pieces), upmeasure, config['max_upload_rate'] * 1024, rawserver.add_task) infohash = sha(bencode(info)).digest() encoder = Encoder(connecter, rawserver, myid, config['max_message_length'], rawserver.add_task, config['keepalive_interval'], infohash, config['max_initiate']) rerequest = Rerequester(response['announce'], config['rerequest_interval'], rawserver.add_task, connecter.how_many_connections, config['min_peers'], encoder.start_connection, rawserver.add_task, storagewrapper.get_amount_left, upmeasure.get_total, downmeasure.get_total, listen_port, config['ip'], myid, infohash, config['http_timeout'], errorfunc, config['max_initiate'], doneflag, upmeasure.get_rate, downmeasure.get_rate, encoder.ever_got_incoming) if config['spew']: spewflag.set() DownloaderFeedback(choker, rawserver.add_task, statusfunc,