def __init__(self, config, network): DaemonThread.__init__(self) self.config = config self.network = network self.wallets = {} self.wallet = self.load_wallet(config.get_wallet_path()) self.cmd_runner = Commands(self.config, self.wallet, self.network) host = config.get('rpchost', 'localhost') port = config.get('rpcport', 0) self.server = SimpleJSONRPCServer((host, port), logRequests=False) with open(lockfile(config), 'w') as f: f.write(repr(self.server.socket.getsockname())) self.server.timeout = 0.1 for cmdname in Commands.known_commands: self.server.register_function(getattr(self.cmd_runner, cmdname), cmdname) self.server.register_function(self.run_cmdline, 'run_cmdline') self.server.register_function(self.ping, 'ping') self.server.register_function(self.run_daemon, 'daemon')
def __init__(self, config=None): if config is None: config = {} # Do not use mutables as default values! DaemonThread.__init__(self) self.config = SimpleConfig(config) if isinstance(config, dict) else config self.num_server = 8 if not self.config.get('oneserver') else 0 self.blockchain = get_blockchain(self.config, self) # A deque of interface header requests, processed left-to-right self.bc_requests = deque() # Server for addresses and transactions self.default_server = self.config.get('server') # Sanitize default server try: deserialize_server(self.default_server) except: self.default_server = None if not self.default_server: default_servers = self.config.get('default_servers') if not default_servers: raise ValueError('No servers have been specified') self.default_server = pick_random_server(default_servers) self.lock = Lock() self.pending_sends = [] self.message_id = 0 self.debug = False self.irc_servers = {} # returned by interface (list from irc) self.banner = '' self.fee = None self.relay_fee = None self.heights = {} self.merkle_roots = {} self.utxo_roots = {} # catchup counter, used to track catchup progress before chain is verified and headers saved self.catchup_progress = 0 # callbacks passed with subscriptions self.subscriptions = defaultdict(list) self.sub_cache = {} self.callbacks = defaultdict(list) dir_path = os.path.join(self.config.path, 'certs') if not os.path.exists(dir_path): os.mkdir(dir_path) # subscriptions and requests self.subscribed_addresses = set() # Requests from client we've not seen a response to self.unanswered_requests = {} # retry times self.server_retry_time = time.time() self.nodes_retry_time = time.time() # kick off the network. interface is the main server we are currently # communicating with. interfaces is the set of servers we are connecting # to or have an ongoing connection with self.interface = None self.interfaces = {} self.auto_connect = self.config.get('auto_connect', False) self.connecting = set() self.socket_queue = Queue.Queue() self.online_servers = {} self._set_online_servers() self.start_network( deserialize_server(self.default_server)[2], deserialize_proxy(self.config.get('proxy')))
def stop(self): for k, wallet in self.wallets.items(): wallet.stop_threads() DaemonThread.stop(self)
def __init__(self, config=None): if config is None: config = {} # Do not use mutables as default values! DaemonThread.__init__(self) self.config = SimpleConfig(config) if isinstance(config, dict) else config self.num_server = 8 if not self.config.get('oneserver') else 0 self.blockchain = get_blockchain(self.config, self) # A deque of interface header requests, processed left-to-right self.bc_requests = deque() # Server for addresses and transactions self.default_server = self.config.get('server') # Sanitize default server try: deserialize_server(self.default_server) except: self.default_server = None if not self.default_server: default_servers = self.config.get('default_servers') if not default_servers: raise ValueError('No servers have been specified') self.default_server = pick_random_server(default_servers) self.lock = Lock() self.pending_sends = [] self.message_id = 0 self.debug = False self.irc_servers = {} # returned by interface (list from irc) self.banner = '' self.fee = None self.relay_fee = None self.heights = {} self.merkle_roots = {} self.utxo_roots = {} # catchup counter, used to track catchup progress before chain is verified and headers saved self.catchup_progress = 0 # callbacks passed with subscriptions self.subscriptions = defaultdict(list) self.sub_cache = {} self.callbacks = defaultdict(list) dir_path = os.path.join(self.config.path, 'certs') if not os.path.exists(dir_path): os.mkdir(dir_path) # subscriptions and requests self.subscribed_addresses = set() # Requests from client we've not seen a response to self.unanswered_requests = {} # retry times self.server_retry_time = time.time() self.nodes_retry_time = time.time() # kick off the network. interface is the main server we are currently # communicating with. interfaces is the set of servers we are connecting # to or have an ongoing connection with self.interface = None self.interfaces = {} self.auto_connect = self.config.get('auto_connect', False) self.connecting = set() self.socket_queue = Queue.Queue() self.online_servers = {} self._set_online_servers() self.start_network(deserialize_server(self.default_server)[2], deserialize_proxy(self.config.get('proxy')))