def main(): sscfg = SessionStartupConfig() sscfg.set_state_dir(unicode(os.path.realpath("/tmp"))) sscfg.set_dispersy_port(6421) sscfg.set_nickname("dispersy") # The only modules needed by dispersy and DHT. sscfg.set_dispersy(True) sscfg.set_megacache(True) # Disable all other tribler modules. sscfg.set_swift_proc(False) sscfg.set_buddycast(False) sscfg.set_social_networking(False) sscfg.set_remote_query(False) sscfg.set_bartercast(False) sscfg.set_overlay(False) sscfg.set_torrent_collecting(False) sscfg.set_dialback(False) sscfg.set_internal_tracker(False) # Create the session and wait for it to be created. session = Session(sscfg) time.sleep(5) # Create the dispersy instance and make it accessible out of the main(). dispersy.append(Dispersy.has_instance()) # Create the NetworkBuzzDBHandler that should be made in the tribler GUI. NetworkBuzzDBHandler.getInstance() #def on_torrent(messages): #pass # Find the search community from the dispersy instance. def findSearchCommunity(): for community in dispersy[0].get_communities(): if isinstance(community, SearchCommunity): search_community.append(community) #searchCommunity.on_torrent = on_torrent break # Let the dispersy thread find the search community. # MUST be called on the dispersy thread. dispersy[0].callback.register(findSearchCommunity) # Any search request before this point will create a segfault! print >> sys.stderr, "Ready to search!" # Keep the main function spinning to keep the session alive and dispersy and DHT running. try: while True: sys.stdin.read() except: print_exc() # Shutdown everything. session.shutdown() print "Shutting down..." time.sleep(5)
def main(): sscfg = SessionStartupConfig() sscfg.set_state_dir(unicode(os.path.realpath("/tmp"))) sscfg.set_dispersy_port(6421) sscfg.set_nickname("dispersy") # The only modules needed by dispersy and DHT. sscfg.set_dispersy(True) sscfg.set_megacache(True) # Disable all other tribler modules. sscfg.set_swift_proc(False) sscfg.set_buddycast(False) sscfg.set_social_networking(False) sscfg.set_remote_query(False) sscfg.set_bartercast(False) sscfg.set_overlay(False) sscfg.set_torrent_collecting(False) sscfg.set_dialback(False) sscfg.set_internal_tracker(False) # Create the session and wait for it to be created. session = Session(sscfg) time.sleep(5) # Create the dispersy instance and make it accessible out of the main(). dispersy.append(Dispersy.has_instance()) # Create the NetworkBuzzDBHandler that should be made in the tribler GUI. NetworkBuzzDBHandler.getInstance() #def on_torrent(messages): #pass # Find the search community from the dispersy instance. def findSearchCommunity(): for community in dispersy[0].get_communities(): if isinstance(community, SearchCommunity): search_community.append(community) #searchCommunity.on_torrent = on_torrent break # Let the dispersy thread find the search community. # MUST be called on the dispersy thread. dispersy[0].callback.register(findSearchCommunity) # Any search request before this point will create a segfault! print >> sys.stderr, "Ready to search!" # Keep the main function spinning to keep the session alive and dispersy and DHT running. try: while True: sys.stdin.read() except: print_exc() # Shutdown everything. session.shutdown() print "Shutting down..." time.sleep(5)
def complete(self, term): """autocompletes term.""" if len(term) > 1: if self.nbdb == None: self.nbdb = NetworkBuzzDBHandler.getInstance() return self.nbdb.getTermsStartingWith(term, num=7) return []
def complete(self, term): """autocompletes term.""" if len(term) > 1: if self.nbdb == None: self.nbdb = NetworkBuzzDBHandler.getInstance() return self.nbdb.getTermsStartingWith(term, num=7) return []
def __init__(self, parent): self.nbdb = NetworkBuzzDBHandler.getInstance() self.xxx_filter = Category.getInstance().xxx_filter HomePanel.__init__(self, parent, "Click below to explore what's hot", LIST_GREY) self.tags = [] self.buzz_cache = [[],[],[]] self.last_shown_buzz = None row1_font = self.GetFont() row1_font.SetPointSize(row1_font.GetPointSize() + 10) row1_font.SetWeight(wx.FONTWEIGHT_BOLD) row2_font = self.GetFont() row2_font.SetPointSize(row2_font.GetPointSize() + 4) row2_font.SetWeight(wx.FONTWEIGHT_BOLD) row3_font = self.GetFont() row3_font.SetWeight(wx.FONTWEIGHT_BOLD) self.TERM_FONTS = [row1_font, row2_font, row3_font] self.header.Bind(wx.EVT_ENTER_WINDOW, lambda event: self.OnLeaveWindow()) self.footer.Bind(wx.EVT_ENTER_WINDOW, lambda event: self.OnLeaveWindow()) self.panel.Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow) self.panel.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow) self.vSizer.Add(self.getStaticText('...collecting buzz information...'), 0, wx.ALIGN_CENTER) self.refresh = 5 self.GetBuzzFromDB(doRefresh=True) self.timer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.OnRefreshTimer, self.timer) self.timer.Start(1000, False)
def setUp(self): AbstractDB.setUp(self) self.tdb = TorrentDBHandler.getInstance() self.tdb.torrent_dir = FILES_DIR self.tdb.mypref_db = MyPreferenceDBHandler.getInstance() self.tdb._nb = NetworkBuzzDBHandler.getInstance()
def do_db(): if self.nbdb == None: self.nbdb = NetworkBuzzDBHandler.getInstance() self.buzz_cache = [[], [], []] buzz = self.nbdb.getBuzz(samplesize, with_freq=True, flat=True) for i in range(len(buzz)): random.shuffle(buzz[i]) self.buzz_cache[i] = buzz[i] if len(self.tags) <= 1 and len(buzz) > 0 or doRefresh: self.OnRefreshTimer(force=True, fromDBThread=True)
def do_db(): if self.nbdb == None: self.nbdb = NetworkBuzzDBHandler.getInstance() self.buzz_cache = [[],[],[]] buzz = self.nbdb.getBuzz(samplesize, with_freq=True, flat=True) for i in range(len(buzz)): random.shuffle(buzz[i]) self.buzz_cache[i] = buzz[i] if len(self.tags) <= 1 and len(buzz) > 0 or doRefresh: self.OnRefreshTimer(force = True, fromDBThread = True)
def __init__(self, *args, **kwds): if DEBUG: print >> sys.stderr , "TopSearchPanel: __init__" bgPanel.__init__(self, *args, **kwds) self.init_ready = False self.guiUtility = GUIUtility.getInstance() self.utility = self.guiUtility.utility self.installdir = self.utility.getPath() self.uelog = UserEventLogDBHandler.getInstance() self.nbdb = NetworkBuzzDBHandler.getInstance()
def setUp(self): self.setUpCleanup() config = {} config['state_dir'] = self.getStateDir() config['install_dir'] = '.' init_db(config) self.tdb = TorrentDBHandler.getInstance() self.tdb.torrent_dir = FILES_DIR self.tdb.mypref_db = MyPreferenceDBHandler.getInstance() self.tdb._nb = NetworkBuzzDBHandler.getInstance() self.torrentChecking = TorrentChecking() sleep(5)
def setUp(self): self.setUpCleanup() config = {} config['state_dir'] = self.getStateDir() config['install_dir'] = '.' init_db(config) self.tdb = TorrentDBHandler.getInstance() self.tdb.torrent_dir = FILES_DIR self.tdb.mypref_db = MyPreferenceDBHandler.getInstance() self.tdb._nb = NetworkBuzzDBHandler.getInstance() self.torrentChecking = TorrentChecking() sleep(5)
def __init__(self, parent): if DEBUG: print >>sys.stderr, "TopSearchPanel: __init__" self.loaded_bitmap = None self.guiUtility = GUIUtility.getInstance() self.utility = self.guiUtility.utility self.installdir = self.utility.getPath() self.uelog = UserEventLogDBHandler.getInstance() self.nbdb = NetworkBuzzDBHandler.getInstance() bgPanel.__init__(self, parent, "top_search") self.selectTab("home")
def __init__(self, *args, **kwds): if DEBUG: print >> sys.stderr , "TopSearchPanel: __init__" bgPanel.__init__(self, *args, **kwds) self.init_ready = False self.guiUtility = GUIUtility.getInstance() self.utility = self.guiUtility.utility self.installdir = self.utility.getPath() self.animationTimer = None self.buttonsBackgroundColourSelected = wx.Colour(235, 233, 228) self.buttonsBackgroundColour = wx.Colour(193, 188, 177) self.buttonsForegroundColour = wx.BLACK self.uelog = UserEventLogDBHandler.getInstance() self.nbdb = NetworkBuzzDBHandler.getInstance()
def register(self, session, sesslock): if not self.registered: self.registered = True self.session = session self.sesslock = sesslock self.downloads = {} config = session.sessconfig # Should be safe at startup self.upnp_ports = [] # Orig self.sessdoneflag = Event() self.rawserver = RawServer(self.sessdoneflag, config['timeout_check_interval'], config['timeout'], ipv6_enable=config['ipv6_enabled'], failfunc=self.rawserver_fatalerrorfunc, errorfunc=self.rawserver_nonfatalerrorfunc) self.rawserver.add_task(self.rawserver_keepalive, 1) self.listen_port = config['minport'] self.shutdownstarttime = None self.multihandler = MultiHandler(self.rawserver, self.sessdoneflag) # SWIFTPROC swift_exists = config['swiftproc'] and (os.path.exists(config['swiftpath']) or os.path.exists(config['swiftpath'] + '.exe')) if swift_exists: from Tribler.Core.Swift.SwiftProcessMgr import SwiftProcessMgr self.spm = SwiftProcessMgr(config['swiftpath'], config['swiftcmdlistenport'], config['swiftdlsperproc'], self.session.get_swift_tunnel_listen_port(), self.sesslock) try: self.swift_process = self.spm.get_or_create_sp(self.session.get_swift_working_dir(), self.session.get_torrent_collecting_dir(), self.session.get_swift_tunnel_listen_port(), self.session.get_swift_tunnel_httpgw_listen_port(), self.session.get_swift_tunnel_cmdgw_listen_port()) self.upnp_ports.append((self.session.get_swift_tunnel_listen_port(), 'UDP')) except OSError: # could not find/run swift print >> sys.stderr, "lmc: could not start a swift process" else: self.spm = None self.swift_process = None # Dispersy self.session.dispersy_member = None if config['dispersy']: from Tribler.dispersy.callback import Callback from Tribler.dispersy.dispersy import Dispersy from Tribler.dispersy.endpoint import RawserverEndpoint, TunnelEndpoint from Tribler.dispersy.community import HardKilledCommunity # set communication endpoint if config['dispersy-tunnel-over-swift'] and self.swift_process: endpoint = TunnelEndpoint(self.swift_process) else: endpoint = RawserverEndpoint(self.rawserver, config['dispersy_port']) callback = Callback("Dispersy") # WARNING NAME SIGNIFICANT working_directory = unicode(config['state_dir']) self.dispersy = Dispersy(callback, endpoint, working_directory) # TODO: see if we can postpone dispersy.start to improve GUI responsiveness. # However, for now we must start self.dispersy.callback before running # try_register(nocachedb, self.database_thread)! self.dispersy.start() print >> sys.stderr, "lmc: Dispersy is listening on port", self.dispersy.wan_address[1], "using", endpoint self.upnp_ports.append((self.dispersy.wan_address[1], 'UDP')) self.dispersy.callback.call(self.dispersy.define_auto_load, args=(HardKilledCommunity,), kargs={'load': True}) # notify dispersy finished loading self.session.uch.notify(NTFY_DISPERSY, NTFY_STARTED, None) from Tribler.Core.permid import read_keypair from Tribler.dispersy.crypto import ec_to_public_bin, ec_to_private_bin keypair = read_keypair(self.session.get_permid_keypair_filename()) self.session.dispersy_member = callback.call(self.dispersy.get_member, (ec_to_public_bin(keypair), ec_to_private_bin(keypair))) self.database_thread = callback else: class FakeCallback(): def __init__(self): from Tribler.Utilities.TimedTaskQueue import TimedTaskQueue self.queue = TimedTaskQueue("FakeCallback") def register(self, call, args=(), kargs=None, delay=0.0, priority=0, id_=u"", callback=None, callback_args=(), callback_kargs=None, include_id=False): def do_task(): if kargs: call(*args, **kargs) else: call(*args) if callback: if callback_kargs: callback(*callback_args, **callback_kargs) else: callback(*callback_args) self.queue.add_task(do_task, t=delay) def shutdown(self, immediately=False): self.queue.shutdown(immediately) self.database_thread = FakeCallback() if config['megacache']: import Tribler.Core.CacheDB.cachedb as cachedb from Tribler.Core.CacheDB.SqliteCacheDBHandler import PeerDBHandler, TorrentDBHandler, MyPreferenceDBHandler, VoteCastDBHandler, ChannelCastDBHandler, NetworkBuzzDBHandler, UserEventLogDBHandler from Tribler.Category.Category import Category from Tribler.Core.Tag.Extraction import TermExtraction from Tribler.Core.CacheDB.sqlitecachedb import try_register if DEBUG: print >> sys.stderr, 'tlm: Reading Session state from', config['state_dir'] nocachedb = cachedb.init(config, self.rawserver_fatalerrorfunc) try_register(nocachedb, self.database_thread) self.cat = Category.getInstance(config['install_dir']) self.term = TermExtraction.getInstance(config['install_dir']) self.peer_db = PeerDBHandler.getInstance() self.peer_db.registerConnectionUpdater(self.session) self.torrent_db = TorrentDBHandler.getInstance() self.torrent_db.register(os.path.abspath(config['torrent_collecting_dir'])) self.mypref_db = MyPreferenceDBHandler.getInstance() self.votecast_db = VoteCastDBHandler.getInstance() self.votecast_db.registerSession(self.session) self.channelcast_db = ChannelCastDBHandler.getInstance() self.channelcast_db.registerSession(self.session) self.nb_db = NetworkBuzzDBHandler.getInstance() self.ue_db = UserEventLogDBHandler.getInstance() if self.dispersy: self.dispersy.database.attach_commit_callback(self.channelcast_db._db.commitNow) else: config['torrent_checking'] = 0 self.rtorrent_handler = None if config['torrent_collecting']: from Tribler.Core.RemoteTorrentHandler import RemoteTorrentHandler self.rtorrent_handler = RemoteTorrentHandler()
def register(self, session, sesslock): if not self.registered: self.registered = True self.session = session self.sesslock = sesslock self.downloads = {} config = session.sessconfig # Should be safe at startup self.upnp_ports = [] # Orig self.sessdoneflag = Event() self.rawserver = RawServer( self.sessdoneflag, config['timeout_check_interval'], config['timeout'], ipv6_enable=config['ipv6_enabled'], failfunc=self.rawserver_fatalerrorfunc, errorfunc=self.rawserver_nonfatalerrorfunc) self.rawserver.add_task(self.rawserver_keepalive, 1) self.listen_port = config['minport'] self.shutdownstarttime = None self.multihandler = MultiHandler(self.rawserver, self.sessdoneflag) # SWIFTPROC swift_exists = config['swiftproc'] and ( os.path.exists(config['swiftpath']) or os.path.exists(config['swiftpath'] + '.exe')) if swift_exists: from Tribler.Core.Swift.SwiftProcessMgr import SwiftProcessMgr self.spm = SwiftProcessMgr( config['swiftpath'], config['swiftcmdlistenport'], config['swiftdlsperproc'], self.session.get_swift_tunnel_listen_port(), self.sesslock) try: self.swift_process = self.spm.get_or_create_sp( self.session.get_swift_working_dir(), self.session.get_torrent_collecting_dir(), self.session.get_swift_tunnel_listen_port(), self.session.get_swift_tunnel_httpgw_listen_port(), self.session.get_swift_tunnel_cmdgw_listen_port()) self.upnp_ports.append( (self.session.get_swift_tunnel_listen_port(), 'UDP')) except OSError: # could not find/run swift print >> sys.stderr, "lmc: could not start a swift process" else: self.spm = None self.swift_process = None # Dispersy self.session.dispersy_member = None if config['dispersy']: from Tribler.dispersy.callback import Callback from Tribler.dispersy.dispersy import Dispersy from Tribler.dispersy.endpoint import RawserverEndpoint, TunnelEndpoint from Tribler.dispersy.community import HardKilledCommunity # set communication endpoint if config['dispersy-tunnel-over-swift'] and self.swift_process: endpoint = TunnelEndpoint(self.swift_process) else: endpoint = RawserverEndpoint(self.rawserver, config['dispersy_port']) callback = Callback("Dispersy") # WARNING NAME SIGNIFICANT working_directory = unicode(config['state_dir']) self.dispersy = Dispersy(callback, endpoint, working_directory) # TODO: see if we can postpone dispersy.start to improve GUI responsiveness. # However, for now we must start self.dispersy.callback before running # try_register(nocachedb, self.database_thread)! self.dispersy.start() print >> sys.stderr, "lmc: Dispersy is listening on port", self.dispersy.wan_address[ 1], "using", endpoint self.upnp_ports.append((self.dispersy.wan_address[1], 'UDP')) self.dispersy.callback.call(self.dispersy.define_auto_load, args=(HardKilledCommunity, ), kargs={'load': True}) # notify dispersy finished loading self.session.uch.notify(NTFY_DISPERSY, NTFY_STARTED, None) from Tribler.Core.permid import read_keypair from Tribler.dispersy.crypto import ec_to_public_bin, ec_to_private_bin keypair = read_keypair( self.session.get_permid_keypair_filename()) self.session.dispersy_member = callback.call( self.dispersy.get_member, (ec_to_public_bin(keypair), ec_to_private_bin(keypair))) self.database_thread = callback else: class FakeCallback(): def __init__(self): from Tribler.Utilities.TimedTaskQueue import TimedTaskQueue self.queue = TimedTaskQueue("FakeCallback") def register(self, call, args=(), kargs=None, delay=0.0, priority=0, id_=u"", callback=None, callback_args=(), callback_kargs=None, include_id=False): def do_task(): if kargs: call(*args, **kargs) else: call(*args) if callback: if callback_kargs: callback(*callback_args, **callback_kargs) else: callback(*callback_args) self.queue.add_task(do_task, t=delay) def shutdown(self, immediately=False): self.queue.shutdown(immediately) self.database_thread = FakeCallback() if config['megacache']: import Tribler.Core.CacheDB.cachedb as cachedb from Tribler.Core.CacheDB.SqliteCacheDBHandler import PeerDBHandler, TorrentDBHandler, MyPreferenceDBHandler, VoteCastDBHandler, ChannelCastDBHandler, NetworkBuzzDBHandler, UserEventLogDBHandler from Tribler.Category.Category import Category from Tribler.Core.Tag.Extraction import TermExtraction from Tribler.Core.CacheDB.sqlitecachedb import try_register if DEBUG: print >> sys.stderr, 'tlm: Reading Session state from', config[ 'state_dir'] nocachedb = cachedb.init(config, self.rawserver_fatalerrorfunc) try_register(nocachedb, self.database_thread) self.cat = Category.getInstance(config['install_dir']) self.term = TermExtraction.getInstance(config['install_dir']) self.peer_db = PeerDBHandler.getInstance() self.peer_db.registerConnectionUpdater(self.session) self.torrent_db = TorrentDBHandler.getInstance() self.torrent_db.register( os.path.abspath(config['torrent_collecting_dir'])) self.mypref_db = MyPreferenceDBHandler.getInstance() self.votecast_db = VoteCastDBHandler.getInstance() self.votecast_db.registerSession(self.session) self.channelcast_db = ChannelCastDBHandler.getInstance() self.channelcast_db.registerSession(self.session) self.nb_db = NetworkBuzzDBHandler.getInstance() self.ue_db = UserEventLogDBHandler.getInstance() if self.dispersy: self.dispersy.database.attach_commit_callback( self.channelcast_db._db.commitNow) else: config['torrent_checking'] = 0 self.rtorrent_handler = None if config['torrent_collecting']: from Tribler.Core.RemoteTorrentHandler import RemoteTorrentHandler self.rtorrent_handler = RemoteTorrentHandler()