Browse Source

Daemon: enable attribute locking

The MMGen Project 3 years ago
parent
commit
08ea12b8e5
1 changed files with 8 additions and 1 deletions
  1. 8 1
      mmgen/daemon.py

+ 8 - 1
mmgen/daemon.py

@@ -30,7 +30,7 @@ _dd = namedtuple('daemon_data',['coind_name','coind_version','coind_version_str'
 _cd = namedtuple('coins_data',['coin_name','daemon_ids'])
 _cd = namedtuple('coins_data',['coin_name','daemon_ids'])
 _nw = namedtuple('coin_networks',['mainnet','testnet','regtest'])
 _nw = namedtuple('coin_networks',['mainnet','testnet','regtest'])
 
 
-class Daemon(MMGenObject):
+class Daemon(Lockable):
 
 
 	desc = 'daemon'
 	desc = 'daemon'
 	debug = False
 	debug = False
@@ -43,6 +43,7 @@ class Daemon(MMGenObject):
 	private_port = None
 	private_port = None
 	avail_opts = ()
 	avail_opts = ()
 	avail_flags = () # like opts, but can be added or removed after instantiation
 	avail_flags = () # like opts, but can be added or removed after instantiation
+	_reset_ok = ('debug','wait','_flags')
 
 
 	def __init__(self):
 	def __init__(self):
 		self.opts = []
 		self.opts = []
@@ -253,6 +254,7 @@ class RPCDaemon(Daemon):
 			self.rpc_type,
 			self.rpc_type,
 			getattr(self.proto.network_names,self.proto.network),
 			getattr(self.proto.network_names,self.proto.network),
 			'test suite ' if self.test_suite else '' )
 			'test suite ' if self.test_suite else '' )
+		self._set_ok += ('usr_daemon_args',)
 		self.usr_daemon_args = []
 		self.usr_daemon_args = []
 
 
 	@property
 	@property
@@ -325,6 +327,8 @@ class MoneroWalletDaemon(RPCDaemon):
 			['--stagenet',                           self.network == 'testnet'],
 			['--stagenet',                           self.network == 'testnet'],
 		)
 		)
 
 
+		self.lock()
+
 class CoinDaemon(Daemon):
 class CoinDaemon(Daemon):
 	networks = ('mainnet','testnet','regtest')
 	networks = ('mainnet','testnet','regtest')
 	cfg_file_hdr = ''
 	cfg_file_hdr = ''
@@ -405,6 +409,7 @@ class CoinDaemon(Daemon):
 
 
 		super().__init__()
 		super().__init__()
 
 
+		self._set_ok += ('shared_args','usr_coind_args')
 		self.shared_args = []
 		self.shared_args = []
 		self.usr_coind_args = []
 		self.usr_coind_args = []
 
 
@@ -463,6 +468,8 @@ class CoinDaemon(Daemon):
 			'test suite ' if test_suite else '' )
 			'test suite ' if test_suite else '' )
 		self.subclass_init()
 		self.subclass_init()
 
 
+		self.lock()
+
 	def init_rpc_port(self,test_suite,port_shift):
 	def init_rpc_port(self,test_suite,port_shift):
 		self.port_shift = (1237 if test_suite else 0) + (port_shift or 0)
 		self.port_shift = (1237 if test_suite else 0) + (port_shift or 0)
 		self.rpc_port = getattr(self.rpc_ports,self.network) + self.port_shift
 		self.rpc_port = getattr(self.rpc_ports,self.network) + self.port_shift