sync controller database to disk and load it on start
This commit is contained in:
@@ -28,7 +28,7 @@ async def _run_hub(*, task_status=trio.TASK_STATUS_IGNORED) -> None:
|
||||
app.my_nc = mync
|
||||
_logger.info("Running hub for API")
|
||||
myapp = ApiHubApp()
|
||||
myhub = capport.comm.hub.Hub(config=app.my_config, app=myapp)
|
||||
myhub = capport.comm.hub.Hub(config=app.my_config, app=myapp, is_controller=False)
|
||||
app.my_hub = myhub
|
||||
await myhub.run(task_status=task_status)
|
||||
finally:
|
||||
|
@@ -56,28 +56,28 @@ async def get_client_mac(address: typing.Optional[cptypes.IPAddress]=None) -> cp
|
||||
|
||||
async def user_login(address: cptypes.IPAddress, mac: cptypes.MacAddress) -> None:
|
||||
assert app.my_hub # for mypy
|
||||
pu = capport.database.PendingUpdates()
|
||||
try:
|
||||
app.my_hub.database.login(mac, app.my_config.session_timeout, pending_updates=pu)
|
||||
except capport.database.NotReadyYet as e:
|
||||
quart.abort(500, str(e))
|
||||
async with app.my_hub.database.make_changes() as pu:
|
||||
try:
|
||||
pu.login(mac, app.my_config.session_timeout)
|
||||
except capport.database.NotReadyYet as e:
|
||||
quart.abort(500, str(e))
|
||||
|
||||
if pu.macs:
|
||||
if pu:
|
||||
_logger.debug(f'User {mac} (with IP {address}) logged in')
|
||||
for msg in pu.serialize():
|
||||
for msg in pu.serialized:
|
||||
await app.my_hub.broadcast(msg)
|
||||
|
||||
|
||||
async def user_logout(mac: cptypes.MacAddress) -> None:
|
||||
assert app.my_hub # for mypy
|
||||
pu = capport.database.PendingUpdates()
|
||||
try:
|
||||
app.my_hub.database.logout(mac, pending_updates=pu)
|
||||
except capport.database.NotReadyYet as e:
|
||||
quart.abort(500, str(e))
|
||||
if pu.macs:
|
||||
async with app.my_hub.database.make_changes() as pu:
|
||||
try:
|
||||
pu.logout(mac)
|
||||
except capport.database.NotReadyYet as e:
|
||||
quart.abort(500, str(e))
|
||||
if pu:
|
||||
_logger.debug(f'User {mac} logged out')
|
||||
for msg in pu.serialize():
|
||||
for msg in pu.serialized:
|
||||
await app.my_hub.broadcast(msg)
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user