mini-syndicate-py/ovlinfo.py

40 lines
986 B
Python

import sys
import asyncio
import random
import threading
import syndicate.mini.core as S
OverlayLink = S.Record.makeConstructor('OverlayLink', 'downNode upNode')
conn = S.WebsocketConnection(sys.argv[1], sys.argv[2])
uplinks = {}
def add_uplink(turn, src, tgt):
uplinks[src] = tgt
summarise_uplinks()
def del_uplink(turn, src, tgt):
del uplinks[src]
summarise_uplinks()
def summarise_uplinks():
print(repr(uplinks))
with conn.turn() as t:
S.Endpoint(t, S.Observe(OverlayLink(S.CAPTURE, S.CAPTURE)),
on_add=add_uplink,
on_del=del_uplink)
async def reconnect(loop):
while conn:
did_connect = await conn.main(loop, on_connected=lambda: print('-'*50, 'Connected'))
if did_connect:
print('-'*50, 'Disconnected')
else:
await asyncio.sleep(2)
loop = asyncio.get_event_loop()
loop.set_debug(True)
loop.run_until_complete(reconnect(loop))
loop.stop()
loop.run_forever()
loop.close()