network: add method init_parameters_from_config
This commit is contained in:
@@ -294,18 +294,7 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||
|
||||
self._allowed_protocols = {PREFERRED_NETWORK_PROTOCOL}
|
||||
|
||||
# Server for addresses and transactions
|
||||
self.default_server = self.config.get('server', None)
|
||||
# Sanitize default server
|
||||
if self.default_server:
|
||||
try:
|
||||
self.default_server = ServerAddr.from_str(self.default_server)
|
||||
except:
|
||||
self.logger.warning('failed to parse server-string; falling back to localhost:1:s.')
|
||||
self.default_server = ServerAddr.from_str("localhost:1:s")
|
||||
else:
|
||||
self.default_server = pick_random_server(allowed_protocols=self._allowed_protocols)
|
||||
assert isinstance(self.default_server, ServerAddr), f"invalid type for default_server: {self.default_server!r}"
|
||||
self._init_parameters_from_config()
|
||||
|
||||
self.taskgroup = None
|
||||
|
||||
@@ -337,11 +326,6 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||
self.interfaces = {} # these are the ifaces in "initialised and usable" state
|
||||
self._closing_ifaces = set()
|
||||
|
||||
self.auto_connect = self.config.get('auto_connect', True)
|
||||
self.proxy = None
|
||||
self.tor_proxy = False
|
||||
self._maybe_set_oneserver()
|
||||
|
||||
# Dump network messages (all interfaces). Set at runtime from the console.
|
||||
self.debug = False
|
||||
|
||||
@@ -509,6 +493,12 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||
auto_connect=self.auto_connect,
|
||||
oneserver=self.oneserver)
|
||||
|
||||
def _init_parameters_from_config(self) -> None:
|
||||
self.auto_connect = self.config.get('auto_connect', True)
|
||||
self._set_default_server()
|
||||
self._set_proxy(deserialize_proxy(self.config.get('proxy')))
|
||||
self._maybe_set_oneserver()
|
||||
|
||||
def get_donation_address(self):
|
||||
if self.is_connected():
|
||||
return self.donation_address
|
||||
@@ -603,6 +593,20 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||
return server
|
||||
return None
|
||||
|
||||
def _set_default_server(self) -> None:
|
||||
# Server for addresses and transactions
|
||||
server = self.config.get('server', None)
|
||||
# Sanitize default server
|
||||
if server:
|
||||
try:
|
||||
self.default_server = ServerAddr.from_str(server)
|
||||
except:
|
||||
self.logger.warning(f'failed to parse server-string ({server!r}); falling back to localhost:1:s.')
|
||||
self.default_server = ServerAddr.from_str("localhost:1:s")
|
||||
else:
|
||||
self.default_server = pick_random_server(allowed_protocols=self._allowed_protocols)
|
||||
assert isinstance(self.default_server, ServerAddr), f"invalid type for default_server: {self.default_server!r}"
|
||||
|
||||
def _set_proxy(self, proxy: Optional[dict]):
|
||||
self.proxy = proxy
|
||||
dns_hacks.configure_dns_depending_on_proxy(bool(proxy))
|
||||
@@ -639,14 +643,17 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||
or self.config.get('oneserver') != net_params.oneserver:
|
||||
return
|
||||
|
||||
proxy_changed = self.proxy != proxy
|
||||
oneserver_changed = self.oneserver != net_params.oneserver
|
||||
default_server_changed = self.default_server != server
|
||||
self._init_parameters_from_config()
|
||||
|
||||
async with self.restart_lock:
|
||||
self.auto_connect = net_params.auto_connect
|
||||
if self.proxy != proxy or self.oneserver != net_params.oneserver:
|
||||
# Restart the network defaulting to the given server
|
||||
if proxy_changed or oneserver_changed:
|
||||
# Restart the network
|
||||
await self.stop(full_shutdown=False)
|
||||
self.default_server = server
|
||||
await self._start()
|
||||
elif self.default_server != server:
|
||||
elif default_server_changed:
|
||||
await self.switch_to_interface(server)
|
||||
else:
|
||||
await self.switch_lagging_interface()
|
||||
@@ -1236,8 +1243,7 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||
assert not self._closing_ifaces
|
||||
self.logger.info('starting network')
|
||||
self._clear_addr_retry_times()
|
||||
self._set_proxy(deserialize_proxy(self.config.get('proxy')))
|
||||
self._maybe_set_oneserver()
|
||||
self._init_parameters_from_config()
|
||||
await self.taskgroup.spawn(self._run_new_interface(self.default_server))
|
||||
|
||||
async def main():
|
||||
|
||||
Reference in New Issue
Block a user