def __init__(self, socket, config=None): if config is None: config = {} # Do not use mutables as default arguments! threading.Thread.__init__(self) self.config = SimpleConfig(config) if type(config) == type({}) else config self.message_id = 0 self.unanswered_requests = {} self.subscriptions = {} self.debug = False self.lock = threading.Lock() self.pending_transactions_for_notifications = [] self.callbacks = {} self.running = True self.daemon = True if socket: self.pipe = util.SocketPipe(socket) self.network = None else: self.network = Network(config) self.pipe = util.QueuePipe(send_queue=self.network.requests_queue) self.network.start(self.pipe.get_queue) for key in ['status', 'banner', 'updated', 'servers', 'interfaces']: value = self.network.get_status_value(key) self.pipe.get_queue.put({'method': 'network.status', 'params': [key, value]}) # status variables self.status = 'connecting' self.servers = {} self.banner = '' self.blockchain_height = 0 self.server_height = 0 self.interfaces = []
def switch_to_active_chain(self): # print("\nNetworkProxy switch to active chain, waiting for lock") with self.lock: # print(" Got lock") self.message_id = 0 self.unanswered_requests = {} self.subscriptions = {} self.pending_transactions_for_notifications = [] # print(" Stopping current network") self.network.stop() time.sleep(0.3) self.network = Network(self.config) # print(" Set new network") self.pipe = util.QueuePipe(send_queue=self.network.requests_queue) self.network.start(self.pipe.get_queue) # print(" Started new network") self.status = 'connecting' self.servers = {} self.banner = '' self.blockchain_height = 0 self.server_height = 0 self.interfaces = [] for key in [ 'status', 'banner', 'updated', 'servers', 'interfaces' ]: value = self.network.get_status_value(key) self.pipe.get_queue.put({ 'method': 'network.status', 'params': [key, value] })
def __init__(self, socket, config=None): if config is None: config = {} # Do not use mutables as default arguments! util.DaemonThread.__init__(self) self.config = SimpleConfig(config) if type(config) == type({}) else config self.message_id = 0 self.unanswered_requests = {} self.subscriptions = {} self.debug = False self.lock = threading.Lock() self.callbacks = {} if socket: self.pipe = util.SocketPipe(socket) self.network = None else: self.pipe = util.QueuePipe() self.network = Network(self.pipe, config) self.network.start() for key in ['fee','status','banner','updated','servers','interfaces']: value = self.network.get_status_value(key) self.pipe.get_queue.put({'method':'network.status', 'params':[key, value]}) # status variables self.status = 'unknown' self.servers = {} self.banner = '' self.blockchain_height = 0 self.server_height = 0 self.interfaces = [] # value returned by estimatefee self.fee = None
def __init__(self, server, s): threading.Thread.__init__(self) self.server = server self.daemon = True self.client_pipe = util.SocketPipe(s) self.daemon_pipe = util.QueuePipe( send_queue=self.server.network.requests_queue) self.server.add_client(self)
def __init__(self, config): util.DaemonThread.__init__(self) self.debug = False self.config = config self.pipe = util.QueuePipe() self.network = Network(self.pipe, config) self.lock = threading.RLock() # each GUI is a client of the daemon self.clients = [] self.request_id = 0 self.requests = {}