Inputbuffer für Spiellogik
Verfasst: Donnerstag 11. September 2014, 14:58
Moin Moin,
ich bin zur Zeit dabei, Python zu lernen, und als erstes "Projekt" möchte ich zur Zeit ein Kartenspiel programmieren, dass ich mit einigen Freunden häufig Spiele ^^
Ich bin jetzt mit der Server/Clientklassesoweit fertig, dass ich die Clients am Server registrieren und Nachrichten von/an Clients versenden kann. Der Server benutzt dabei n (Anzahl der Spieler) Threads, die jeweils auf einem Port lauschen und die empfangenen Nachrichten dann an die __lshift__(self, packet) der Spiellogik übergeben.
Ich bin jetzt dabei, eben diese Methode zu entwickeln. Mein Problem ist, dass die Pakete nicht parallel, sondern hintereinander verarbeitet werden sollen. Meine Vorgehensweise wäre jetzt diese:
Eine Variable self.request_is_handled die speichert, ob bereits eine Anfrage bearbeitet wird.
Die __lshift__ Methode schreibt die Pakete in eine Liste (die ich während eines Zugriffs immer locken kann) und ruft den Requesthandler auf falls self.request_is_handled == False.
Der Requesthandler wiederum arbeitet die Listenobjekte der Reihe nach ab und sobald die Liste leer ist wird self.request_is_handled = False gesetzt und der Thread des Requesthandlers geschlossen.
Meine Frage ist jetzt eigentlich, ob das Vorhaben so "ok" ist oder ob es deutlich elegantere Lösungen dafür gibt ?
MfG
Laudian
ich bin zur Zeit dabei, Python zu lernen, und als erstes "Projekt" möchte ich zur Zeit ein Kartenspiel programmieren, dass ich mit einigen Freunden häufig Spiele ^^
Ich bin jetzt mit der Server/Clientklassesoweit fertig, dass ich die Clients am Server registrieren und Nachrichten von/an Clients versenden kann. Der Server benutzt dabei n (Anzahl der Spieler) Threads, die jeweils auf einem Port lauschen und die empfangenen Nachrichten dann an die __lshift__(self, packet) der Spiellogik übergeben.
Ich bin jetzt dabei, eben diese Methode zu entwickeln. Mein Problem ist, dass die Pakete nicht parallel, sondern hintereinander verarbeitet werden sollen. Meine Vorgehensweise wäre jetzt diese:
Eine Variable self.request_is_handled die speichert, ob bereits eine Anfrage bearbeitet wird.
Die __lshift__ Methode schreibt die Pakete in eine Liste (die ich während eines Zugriffs immer locken kann) und ruft den Requesthandler auf falls self.request_is_handled == False.
Der Requesthandler wiederum arbeitet die Listenobjekte der Reihe nach ab und sobald die Liste leer ist wird self.request_is_handled = False gesetzt und der Thread des Requesthandlers geschlossen.
Meine Frage ist jetzt eigentlich, ob das Vorhaben so "ok" ist oder ob es deutlich elegantere Lösungen dafür gibt ?
MfG
Laudian