|
@@ -43,6 +43,7 @@ class Dnetview:
|
|
|
|
|
|
|
|
self.model = Model()
|
|
self.model = Model()
|
|
|
self.view = View(self.model)
|
|
self.view = View(self.model)
|
|
|
|
|
+ self.rpc_conns = []
|
|
|
|
|
|
|
|
async def subscribe(self, rpc, node):
|
|
async def subscribe(self, rpc, node):
|
|
|
name = node['name']
|
|
name = node['name']
|
|
@@ -68,8 +69,6 @@ class Dnetview:
|
|
|
await self.connect_loop(rpc, node, info)
|
|
await self.connect_loop(rpc, node, info)
|
|
|
await self.get_info(rpc, node, info)
|
|
await self.get_info(rpc, node, info)
|
|
|
|
|
|
|
|
- await rpc.dnet_switch(False)
|
|
|
|
|
-
|
|
|
|
|
if type == 'LILITH':
|
|
if type == 'LILITH':
|
|
|
while True:
|
|
while True:
|
|
|
await asyncio.sleep(1)
|
|
await asyncio.sleep(1)
|
|
@@ -79,8 +78,6 @@ class Dnetview:
|
|
|
logging.debug(f'{name} RPC on port {port} disconnected {e}')
|
|
logging.debug(f'{name} RPC on port {port} disconnected {e}')
|
|
|
await self.connect_loop(rpc, node, info)
|
|
await self.connect_loop(rpc, node, info)
|
|
|
|
|
|
|
|
- await rpc.stop()
|
|
|
|
|
-
|
|
|
|
|
async def lilith_spawns(self, rpc, node, info):
|
|
async def lilith_spawns(self, rpc, node, info):
|
|
|
name = node['name']
|
|
name = node['name']
|
|
|
host = node['host']
|
|
host = node['host']
|
|
@@ -133,6 +130,7 @@ class Dnetview:
|
|
|
async with asyncio.TaskGroup() as tg:
|
|
async with asyncio.TaskGroup() as tg:
|
|
|
for i, node in enumerate(nodes):
|
|
for i, node in enumerate(nodes):
|
|
|
rpc = JsonRpc()
|
|
rpc = JsonRpc()
|
|
|
|
|
+ self.rpc_conns.append(rpc)
|
|
|
subscribe = tg.create_task(self.subscribe(
|
|
subscribe = tg.create_task(self.subscribe(
|
|
|
rpc, node))
|
|
rpc, node))
|
|
|
nodes = tg.create_task(self.update_info())
|
|
nodes = tg.create_task(self.update_info())
|
|
@@ -189,7 +187,11 @@ class Dnetview:
|
|
|
self.ev.create_task(self.start_connect_slots(nodes))
|
|
self.ev.create_task(self.start_connect_slots(nodes))
|
|
|
self.ev.create_task(self.view.update_view(self.ev, loop))
|
|
self.ev.create_task(self.view.update_view(self.ev, loop))
|
|
|
|
|
|
|
|
- loop.run()
|
|
|
|
|
|
|
+ try:
|
|
|
|
|
+ loop.run()
|
|
|
|
|
+ finally:
|
|
|
|
|
+ self.ev.run_until_complete(self.shutdown())
|
|
|
|
|
+
|
|
|
|
|
|
|
|
def unhandled_input(self, key):
|
|
def unhandled_input(self, key):
|
|
|
if isinstance(key, tuple):
|
|
if isinstance(key, tuple):
|
|
@@ -199,6 +201,14 @@ class Dnetview:
|
|
|
task.cancel()
|
|
task.cancel()
|
|
|
raise urwid.ExitMainLoop()
|
|
raise urwid.ExitMainLoop()
|
|
|
|
|
|
|
|
|
|
+ async def shutdown(self):
|
|
|
|
|
+ for rpc in self.rpc_conns:
|
|
|
|
|
+ try:
|
|
|
|
|
+ await rpc.dnet_switch(False)
|
|
|
|
|
+ await rpc.stop()
|
|
|
|
|
+ except:
|
|
|
|
|
+ pass
|
|
|
|
|
+
|
|
|
if __name__ == '__main__':
|
|
if __name__ == '__main__':
|
|
|
dnet = Dnetview()
|
|
dnet = Dnetview()
|
|
|
dnet.main()
|
|
dnet.main()
|