Ejemplo n.º 1
0
 def __init__(self):
     if DEBUG:
         print >> sys.stderr, 'mainlineDHTChecker: initialization'
     if mainlineDHTChecker.__single:
         raise RuntimeError, 'mainlineDHTChecker is Singleton'
     mainlineDHTChecker.__single = self
     self.dht = None
     self.torrent_db = TorrentDBHandler.getInstance()
Ejemplo n.º 2
0
 def register(self, session, metadata_handler, helpdir, dlconfig):
     self.session = session
     self.helpdir = helpdir
     self.dlconfig = dlconfig
     self.metadata_handler = metadata_handler
     self.torrent_db = TorrentDBHandler.getInstance()
Ejemplo n.º 3
0
 def run(self):
     try:
         if DEBUG:
             print >> sys.stderr, 'Torrent Checking: RUN', threading.currentThread().getName()
         event = threading.Event()
         return_value = safe_dict()
         return_value['event'] = event
         return_value['torrent'] = None
         if self.infohash is None:
             policy = self.selectPolicy()
             if self.db_thread:
                 self.db_thread.add_task(lambda : TorrentDBHandler.getInstance().selectTorrentToCheck(policy=policy, return_value=return_value))
             else:
                 TorrentDBHandler.getInstance().selectTorrentToCheck(policy=policy, return_value=return_value)
         elif self.db_thread:
             self.db_thread.add_task(lambda : TorrentDBHandler.getInstance().selectTorrentToCheck(infohash=self.infohash, return_value=return_value))
         else:
             TorrentDBHandler.getInstance().selectTorrentToCheck(infohash=self.infohash, return_value=return_value)
         event.wait(60.0)
         torrent = return_value['torrent']
         if DEBUG:
             print >> sys.stderr, 'Torrent Checking: get value from DB:', torrent
         if not torrent:
             return
         if self.infohash is None and torrent['ignored_times'] > 0:
             if DEBUG:
                 print >> sys.stderr, 'Torrent_checking: torrent: %s' % torrent
             kw = {'ignored_times': torrent['ignored_times'] - 1}
             if self.db_thread:
                 self.db_thread.add_task(lambda : TorrentDBHandler.getInstance().updateTracker(torrent['infohash'], kw))
             else:
                 TorrentDBHandler.getInstance().updateTracker(torrent['infohash'], kw)
             return
         torrent = self.readTorrent(torrent)
         if 'info' not in torrent:
             if self.db_thread:
                 self.db_thread.add_task(lambda : TorrentDBHandler.getInstance().deleteTorrent(torrent['infohash']))
             else:
                 TorrentDBHandler.getInstance().deleteTorrent(torrent['infohash'])
             return
         if DEBUG:
             print >> sys.stderr, 'Tracker Checking'
         trackerChecking(torrent)
         self.mldhtchecker.lookup(torrent['infohash'])
         self.updateTorrentInfo(torrent)
         kw = {'last_check_time': int(time()),
          'seeder': torrent['seeder'],
          'leecher': torrent['leecher'],
          'status': torrent['status'],
          'ignored_times': torrent['ignored_times'],
          'retried_times': torrent['retried_times']}
         if DEBUG:
             print >> sys.stderr, 'Torrent Checking: selectTorrentToCheck:', kw
         if self.db_thread:
             self.db_thread.add_task(lambda : TorrentDBHandler.getInstance().updateTorrent(torrent['infohash'], **kw))
         else:
             TorrentDBHandler.getInstance().updateTorrent(torrent['infohash'], **kw)
     finally:
         if not self.db_thread:
             TorrentDBHandler.getInstance().close()
Ejemplo n.º 4
0
 def register(self, session, metadata_handler, helpdir, dlconfig):
     self.session = session
     self.helpdir = helpdir
     self.dlconfig = dlconfig
     self.metadata_handler = metadata_handler
     self.torrent_db = TorrentDBHandler.getInstance()