make pylint happy

This commit is contained in:
Laila van Reenen 2024-08-10 10:45:35 +02:00
parent c418ebcc53
commit 33cee85edb
Signed by: LailaTheElf
GPG Key ID: 1F4E6EE3E6DDF769

View File

@ -12,59 +12,45 @@ BOAT_STATE_LOCKED = -1
boats = [] boats = []
clients = [] clients = []
def onCMD(data): async def echo_boats(client):
global boats, adminId """echo list of all not locked boats to client"""
print("command:" + str(data))
if (len(data) != 4):
return
if (data[1] != adminId):
return
boot = int(data[2])
if (boot >= 0 and boot <= 3):
boats[boot] = data[3]
print(boats)
def sendData(data):
global boats
print("data to send: " + str(data))
async def echoBoats(client):
global boats global boats
data = "boats:" data = "boats:"
for boat in boats: for boat in boats:
if (boat['state'] != BOAT_STATE_LOCKED): if boat['state'] != BOAT_STATE_LOCKED:
data += str(boat['id']) + ";" + str(boat['name']) + ";" data += str(boat['id']) + ";" + str(boat['name']) + ";"
if (boat["state"] == BOAT_STATE_AVAILABLE): if boat["state"] == BOAT_STATE_AVAILABLE:
data += 'available:' data += 'available:'
elif (boat["state"] == BOAT_STATE_INCTRL): elif boat["state"] == BOAT_STATE_INCTRL:
data += 'inctrl:' data += 'inctrl:'
await client['ws'].send(data) await client['ws'].send(data)
async def echoLockedBoats(client): async def echo_locked_boats(client):
"""echo list of all locked boats to client"""
global boats global boats
if (client['id'] == adminId): if client['id'] == adminId:
data = "lockedBoats:" data = "lockedBoats:"
for boat in boats: for boat in boats:
if (boat['state'] == BOAT_STATE_LOCKED): if boat['state'] == BOAT_STATE_LOCKED:
data += str(boat['id']) + ";" + str(boat['name']) + ";locked:" data += str(boat['id']) + ";" + str(boat['name']) + ";locked:"
await client['ws'].send(data + '\n') await client['ws'].send(data + '\n')
async def echoClients(client): async def echo_clients(client):
global clients """echo list of all clients to client"""
if (client['id'] == adminId): if client['id'] == adminId:
data = "clients:" data = "clients:"
for client in clients: for client in clients:
data += str(client['id']) + ";" + str(client['boat']) + ";" + str(client['state']) + ":" data += str(client['id']) + ";" + str(client['boat']) + ";" + str(client['state']) + ":"
await client['ws'].send(data + '\n') await client['ws'].send(data + '\n')
async def takeControll(client, boat): async def take_controll(client, boat):
global boats """let a client take controll a boat"""
if (client['boat'] is not None): if client['boat'] is not None:
client['boat']["state"] = BOAT_STATE_AVAILABLE client['boat']["state"] = BOAT_STATE_AVAILABLE
client["boat"] = None client["boat"] = None
for b in boats: for b in boats:
if (b['id'] == boat): if b['id'] == boat:
if (b['state'] == BOAT_STATE_AVAILABLE): if b['state'] == BOAT_STATE_AVAILABLE:
b["state"] = BOAT_STATE_INCTRL b["state"] = BOAT_STATE_INCTRL
print("take controll: " + str(client["id"]) + " -> " + b["name"]) print("take controll: " + str(client["id"]) + " -> " + b["name"])
client["boat"] = b client["boat"] = b
@ -74,57 +60,57 @@ async def takeControll(client, boat):
break break
await client['ws'].send("FAIL") await client['ws'].send("FAIL")
async def freeBoat(boat): async def free_boat(boat):
global boats, clients """make boat available for next client"""
for client in clients: for client in clients:
if (client["boat"]['id'] == boat): if client["boat"]['id'] == boat:
client["boat"] = None client["boat"] = None
break break
for b in boats: for b in boats:
if (b['id'] == boat): if b['id'] == boat:
if (boat['state'] == BOAT_STATE_INCTRL): if boat['state'] == BOAT_STATE_INCTRL:
boat["state"] = BOAT_STATE_AVAILABLE boat["state"] = BOAT_STATE_AVAILABLE
break break
async def lockBoat(boat): async def lock_boat(boat):
global boats, clients """lock a boat so client can't take controll over it"""
for client in clients: for client in clients:
if (client["boat"]['id'] == boat): if client["boat"]['id'] == boat:
client["boat"] = None client["boat"] = None
break break
for b in boats: for b in boats:
if (b['id'] == int(boat)): if b['id'] == int(boat):
boat["state"] = BOAT_STATE_LOCKED boat["state"] = BOAT_STATE_LOCKED
break break
async def onMessage(message, client): async def on_message(message, client):
global boats """handel for client messages"""
data = message.replace('\n', '').split(';') data = message.replace('\n', '').split(';')
if(data[0] != client["id"]): if data[0] != client["id"]:
print("invalid id: " + str(data[0]) + " != " + str(client["id"])) print("invalid id: " + str(data[0]) + " != " + str(client["id"]))
else: else:
if (data[1] == "boats"): if data[1] == "boats":
await echoBoats(client) await echo_boats(client)
elif(data[1] == "ctrl"): elif data[1] == "ctrl":
await takeControll(client, data[2]) await take_controll(client, data[2])
elif(data[1] == "end"): elif data[1] == "end":
await takeControll(client, -1) await take_controll(client, -1)
elif(data[1] == "free"): elif data[1] == "free":
if (client["id"] == adminId): if client["id"] == adminId:
await freeBoat(data[2]) await free_boat(data[2])
elif(data[1] == "lock"): elif data[1] == "lock":
if (client["id"] == adminId): if client["id"] == adminId:
await lockBoat(data[2]) await lock_boat(data[2])
elif(data[1] == "locked"): elif data[1] == "locked":
await echoLockedBoats(client) await echo_locked_boats(client)
elif(data[1] == "kick"): elif data[1] == "kick":
print("kick") print("kick")
elif(data[1] == "clients"): elif data[1] == "clients":
await echoClients(client) await echo_clients(client)
elif(data[1] == "d"): elif data[1] == "d":
if (client['boat'] is None): if client['boat'] is None:
print("WARN: controll cmd (" + client['id'] + ") to None: " + data[2]) print("WARN: controll cmd (" + client['id'] + ") to None: " + data[2])
else: else:
print("INFO: controll cmd (" + client['id'] + ") to " + client['boat']['name'] + ": " + data[2]) print("INFO: controll cmd (" + client['id'] + ") to " + client['boat']['name'] + ": " + data[2])
@ -132,50 +118,54 @@ async def onMessage(message, client):
else: else:
print("WARN: invalid command (" + client['id'] + "): '" + data[1] + "'") print("WARN: invalid command (" + client['id'] + "): '" + data[1] + "'")
async def newClient(clientId, ws): async def new_client(clientId, ws):
"""handler for every new client connection"""
client = { "id": clientId, "boat": None, "ws": ws, "state": "active" } client = { "id": clientId, "boat": None, "ws": ws, "state": "active" }
print("new client connected: " + client['id']) print("new client connected: " + client['id'])
for clie in clients: for clie in clients:
if (clie['id'] == client['id']): if clie['id'] == client['id']:
clie['state'] = 'terminated' clie['state'] = 'terminated'
clients.append(client) clients.append(client)
if (client['id'] == adminId): if client['id'] == adminId:
await echoBoats(client) await echo_boats(client)
await echoLockedBoats(client) await echo_locked_boats(client)
await echoClients(client) await echo_clients(client)
return client return client
async def newBoat(boatId, name, ws): async def new_boat(boatId, name, ws):
"""handler for every new boat connection"""
boat = { "id": boatId, "name": name, "ws": ws, "state": BOAT_STATE_AVAILABLE } boat = { "id": boatId, "name": name, "ws": ws, "state": BOAT_STATE_AVAILABLE }
print("new boat connected: " + boatId) print("new boat connected: " + boatId)
for bo in boats: for bo in boats:
if (bo['id'] == boat['id']): if bo['id'] == boat['id']:
bo['state'] = 'terminated' bo['state'] = 'terminated'
boats.append(boat) boats.append(boat)
return boat return boat
async def run(ws, path): async def run(ws, path):
"""hadeler for every new websocket connection"""
client = None client = None
async for message in ws: async for message in ws:
message = message.split(';') message = message.split(';')
if (len(message) == 3 and message[1] == "4675"): if len(message) == 3 and message[1] == "4675":
client = await newClient(message[0], ws) client = await new_client(message[0], ws)
if (client is not None): if client is not None:
break async for message in ws:
if client['state'] == 'active':
await on_message(message, client)
else:
break
break
elif (len(message) == 3 and message[1] == "3440"): elif (len(message) == 3 and message[1] == "3440"):
client = await newBoat(message[0], message[2], ws) client = await new_boat(message[0], message[2], ws)
if (client is not None): if client is not None:
break async for message in ws:
print("boat" + client['id'] + " says " + message)
async for message in ws:
if (client['state'] == 'active'):
await onMessage(message, client)
else:
break break
async def main(): async def main():
"""main"""
async with serve(run, "0.0.0.0", 8080): async with serve(run, "0.0.0.0", 8080):
await asyncio.Future() await asyncio.Future()
asyncio.run(main()) asyncio.run(main())