Remove users who have left matchmaking
This commit is contained in:
12
app.py
12
app.py
@@ -243,12 +243,13 @@ async def new_room(request):
|
|||||||
|
|
||||||
quick_queue: deque[str]
|
quick_queue: deque[str]
|
||||||
quick_map: dict[str, Room]
|
quick_map: dict[str, Room]
|
||||||
|
quick_last_map: dict[str, datetime]
|
||||||
lock = asyncio.Lock()
|
lock = asyncio.Lock()
|
||||||
|
|
||||||
|
|
||||||
@app.POST("/quick")
|
@app.POST("/quick")
|
||||||
async def quick_match(request: Request):
|
async def quick_match(request: Request):
|
||||||
global quick_queue, quick_map
|
global quick_queue, quick_map, quick_last_map
|
||||||
data = parse(request.body)
|
data = parse(request.body)
|
||||||
async with lock:
|
async with lock:
|
||||||
if (
|
if (
|
||||||
@@ -261,6 +262,13 @@ async def quick_match(request: Request):
|
|||||||
second = None
|
second = None
|
||||||
position: int = 0
|
position: int = 0
|
||||||
# UPDATE LOGIC
|
# UPDATE LOGIC
|
||||||
|
now = datetime.now(timezone.utc)
|
||||||
|
for q, t in quick_last_map.items():
|
||||||
|
if t - now >= timedelta(seconds=3):
|
||||||
|
quick_queue.remove(q)
|
||||||
|
del quick_map[q]
|
||||||
|
del quick_last_map[q]
|
||||||
|
|
||||||
while position < len(quick_queue):
|
while position < len(quick_queue):
|
||||||
if quick_queue[position] not in quick_map:
|
if quick_queue[position] not in quick_map:
|
||||||
if not first:
|
if not first:
|
||||||
@@ -277,6 +285,7 @@ async def quick_match(request: Request):
|
|||||||
quick_map[second] = room
|
quick_map[second] = room
|
||||||
|
|
||||||
qid = data["queue_id"]
|
qid = data["queue_id"]
|
||||||
|
quick_last_map[qid] = datetime.now(timezone.utc)
|
||||||
if qid in quick_map:
|
if qid in quick_map:
|
||||||
return JSONResponse({"room_id": quick_map[qid]})
|
return JSONResponse({"room_id": quick_map[qid]})
|
||||||
else:
|
else:
|
||||||
@@ -285,6 +294,7 @@ async def quick_match(request: Request):
|
|||||||
else:
|
else:
|
||||||
qid = str(uuid.uuid4())
|
qid = str(uuid.uuid4())
|
||||||
quick_queue.append(qid)
|
quick_queue.append(qid)
|
||||||
|
quick_last_map[qid] = datetime.now(timezone.utc)
|
||||||
return JSONResponse({"queue_id": qid})
|
return JSONResponse({"queue_id": qid})
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user