def __init__(self, config=None): if config is None: config = {} # Do not use mutables as default values! threading.Thread.__init__(self) self.daemon = True self.config = SimpleConfig(config) if type(config) == type({}) else config self.lock = threading.Lock() self.num_server = 8 if not self.config.get('oneserver') else 0 self.blockchain = Blockchain(self.config, self) self.interfaces = {} self.queue = Queue.Queue() self.running = False # Server for addresses and transactions self.default_server = self.config.get('server') # Sanitize default server try: host, port, protocol = self.default_server.split(':') assert protocol in 'st' int(port) except: self.default_server = None if not self.default_server: self.default_server = pick_random_server('s') self.protocol = self.default_server.split(':')[2] self.irc_servers = {} # returned by interface (list from irc) self.disconnected_servers = set([]) self.disconnected_time = time.time() self.recent_servers = self.config.get('recent_servers',[]) # successful connections self.pending_servers = set() self.banner = '' self.interface = None self.proxy = interface.deserialize_proxy(self.config.get('proxy')) self.heights = {} self.merkle_roots = {} self.utxo_roots = {} dir_path = os.path.join( self.config.path, 'certs') if not os.path.exists(dir_path): os.mkdir(dir_path) # address subscriptions and cached results self.addresses = {} self.connection_status = 'connecting' self.requests_queue = Queue.Queue()
def get_parameters(self): host, port, protocol = self.default_server.split(':') proxy = interface.deserialize_proxy(self.proxy) auto_connect = self.config.get('auto_cycle', True) return host, port, protocol, proxy, auto_connect