make pylint happy
This commit is contained in:
parent
c418ebcc53
commit
33cee85edb
@ -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):
|
|
||||||
global boats
|
|
||||||
|
async def on_message(message, client):
|
||||||
|
"""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())
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user