示例#1
0
        def download_slot_callback(added, task):
            assert isinstance(task, ReadStoreFromNodeTask)

            if added:
                invoke_in_main_thread(self._tree_model.append, task)
            else:
                invoke_in_main_thread(self._tree_model.remove, task)
示例#2
0
        def store_to_node_task_cb(added, task):
            assert isinstance(task, StoreToNodeTask)

            if added:
                invoke_in_main_thread(self._tree_model.append, task)
            else:
                invoke_in_main_thread(self._tree_model.remove, task)
示例#3
0
    def connect(self):
        t = 2
        nodes = self._get_known_nodes_from_config()

        random.shuffle(nodes)

        nodes = itertools.cycle(nodes)

        for address in nodes:
            self.observer(DHTClientController.CONNECTING)

            join_network_task = self._client.dht_network.join_network(address)

            result = join_network_task.result()

            if result:
                invoke_in_main_thread(self.observer,
                    DHTClientController.CONNECTED)
                break
            else:
                invoke_in_main_thread(self.observer,
                    DHTClientController.DISCONNECTED)

            t *= 2
            t = min(3600, t)

            time.sleep(t)
示例#4
0
 def stop(self, *args):
     self.singletons[DHTClientController].stop()
     invoke_in_main_thread(self.app.quit)
示例#5
0
 def f(*args):
     invoke_in_main_thread(self._disable_scan_ui)