added a StoppableThread class to simplify a bit the Host and Client thread

This commit is contained in:
Faraphel 2023-02-21 23:39:49 +01:00
parent 2f96ab14ad
commit 972327cdc7
4 changed files with 20 additions and 14 deletions

View file

@ -1,30 +1,25 @@
import socket import socket
from threading import Thread
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import pyglet.clock import pyglet.clock
from source.gui import scene from source.gui import scene
from source.network.SocketType import SocketType from source.network.SocketType import SocketType
from source.utils import StoppableThread
if TYPE_CHECKING: if TYPE_CHECKING:
from source.gui.window import Window from source.gui.window import Window
class Client(Thread): class Client(StoppableThread):
def __init__(self, window: "Window", username: str, ip_address: str, port: int = 52321, **kw): def __init__(self, window: "Window", username: str, ip_address: str, port: int = 52321, **kw):
super().__init__(**kw) super().__init__(**kw)
self._stop = False
self.window = window self.window = window
self.username = username self.username = username
self.ip_address = ip_address self.ip_address = ip_address
self.port = port self.port = port
def stop(self):
self._stop = True
def run(self) -> None: def run(self) -> None:
print("[Client] Thread démarré") print("[Client] Thread démarré")

View file

@ -1,29 +1,24 @@
import socket import socket
from threading import Thread
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import pyglet import pyglet
from source.gui import scene from source.gui import scene
from source.network.SocketType import SocketType from source.network.SocketType import SocketType
from source.utils import StoppableThread
if TYPE_CHECKING: if TYPE_CHECKING:
from source.gui.window import Window from source.gui.window import Window
class Host(Thread): class Host(StoppableThread):
def __init__(self, window: "Window", username: str, port: int = 52321, **kw): def __init__(self, window: "Window", username: str, port: int = 52321, **kw):
super().__init__(**kw) super().__init__(**kw)
self._stop = False
self.window = window self.window = window
self.username = username self.username = username
self.port = port self.port = port
def stop(self) -> None:
self._stop = True
def run(self) -> None: def run(self) -> None:
print("[Serveur] Thread démarré") print("[Serveur] Thread démarré")

View file

@ -1,3 +1,4 @@
from .copy_array_offset import copy_array_offset from .copy_array_offset import copy_array_offset
from .in_bbox import in_bbox from .in_bbox import in_bbox
from .dict import dict_filter, dict_filter_prefix from .dict import dict_filter, dict_filter_prefix
from .thread import StoppableThread

15
source/utils/thread.py Normal file
View file

@ -0,0 +1,15 @@
from threading import Thread
class StoppableThread(Thread):
"""
A thread that can be stopped.
The run method need to check for the "self._stop" variable and return manually if it is true.
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._stop = False
def stop(self) -> None:
self._stop = True