core: use abstract room, member, roommanager
This commit is contained in:
@ -1,3 +1,5 @@
|
||||
from channels.generic.websocket import WebsocketConsumer
|
||||
|
||||
from .AbstractRoomMember import AbstractRoomMember
|
||||
|
||||
class AbstractRoom:
|
||||
@ -30,24 +32,20 @@ class AbstractRoom:
|
||||
|
||||
|
||||
def append(self, member: AbstractRoomMember):
|
||||
tmp: AbstractRoomMember = self.get_member_by_user_id(member.user_id)
|
||||
if (tmp is not None):
|
||||
tmp.send("Connection close: Another connection open with the same user id.")
|
||||
self.remove(tmp)
|
||||
member.accept()
|
||||
self._member_list.append(waiter)
|
||||
member.accept()
|
||||
|
||||
def remove(self, member: AbstractRoomMember):
|
||||
self._member_list.remove(member)
|
||||
waiter.disconnect()
|
||||
member.disconnect()
|
||||
|
||||
def empty(self):
|
||||
for _ in self._waiter_list:
|
||||
for _ in self._member_list:
|
||||
return False
|
||||
return True
|
||||
|
||||
def get_users_id(self):
|
||||
return [waiter.user_id for waiter in self._waiter_list]
|
||||
return [member.user_id for member in self._member_list]
|
||||
|
||||
def __len__(self):
|
||||
return len(self._waiter_list)
|
||||
return len(self._member_list)
|
@ -5,14 +5,8 @@ class AbstractRoomManager:
|
||||
def __init__(self):
|
||||
self._room_list: [AbstractRoom] = []
|
||||
|
||||
def get(self, mode: int):
|
||||
for room in self._room_list:
|
||||
room: A
|
||||
if (waiting_room._mode == mode):
|
||||
return waiting_room
|
||||
tmp: WaitingRoom = WaitingRoom(self, mode)
|
||||
self._waiting_rooms.append(tmp)
|
||||
return tmp
|
||||
|
||||
def remove(self, waiting_room: WaitingRoom):
|
||||
self._waiting_rooms.remove(waiting_room)
|
||||
def append(self, room: AbstractRoom):
|
||||
self._room_list.append(room)
|
||||
|
||||
def remove(self, room: AbstractRoom):
|
||||
self._room_list.remove(room)
|
@ -1,3 +1,7 @@
|
||||
from channels.generic.websocket import WebsocketConsumer
|
||||
|
||||
import json
|
||||
|
||||
class AbstractRoomMember:
|
||||
|
||||
def __init__(self, user_id: int, socket: WebsocketConsumer):
|
||||
|
Reference in New Issue
Block a user