From 21416bdc6677ce93894a6c631fefb5d050194cbf Mon Sep 17 00:00:00 2001 From: Dominic Zimmer Date: Fri, 17 Apr 2020 01:35:35 +0200 Subject: [PATCH] Add decor --- model.py | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/model.py b/model.py index c7fe8e2..a716b7e 100644 --- a/model.py +++ b/model.py @@ -12,7 +12,17 @@ def generate_random_id(_s=set()): return new_id -class Model: +class Model(object): + + global api_methods + api_methods = {} + + def api_method(): + global api_methods + def wrapper(fun): + api_methods[fun.__name__] = fun + return wrapper + def __init__(self, filename = "tehmodel.json"): self.sockets = {} # mapping: client -> socket self.filename = filename @@ -33,11 +43,16 @@ class Model: if not "sessions" in self.model: self.model["sessions"] = {} - async def handle_post(self, clientid, data): - print(f"I have received P O S T data: {data} from {clientid}") - print("let me tell everyone") - await self.send_state(clientid) - return True + @api_method() + async def create_session(self, clientid) -> str: + sessionname = generate_random_id() + newsession = {"id": sessionname, "owner": clientid, "clients": []} + self.model["sessions"][sessionname] = newsession + return sessionname + + @api_method() + async def join_session(self, clientid, sessionid): + self.model["sessions"][sessionid] async def send_state(self, clientid): # TODO: compute state, send to client @@ -66,12 +81,6 @@ class Model: self.model["clients"][clientname] = newclient return clientname - def create_session(self, clientid) -> str: - sessionname = generate_random_id() - newsession = {"id": sessionname, "owner": clientid, "clients": []} - self.model["sessions"][sessionname] = newsession - return sessionname - def subscribe(self, clientid, socket): if not clientid in self.sockets: self.sockets[clientid] = []