From d04a29c01873532d572900fa818f75da30008bbf Mon Sep 17 00:00:00 2001 From: Philip Trauner Date: Sat, 20 Feb 2016 10:03:25 +0100 Subject: [PATCH] Added support for a disconnect callback --- Shared/ESock.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Shared/ESock.py b/Shared/ESock.py index 057e5d0..7b4f9ba 100644 --- a/Shared/ESock.py +++ b/Shared/ESock.py @@ -23,10 +23,11 @@ def convert_data(data, data_type): return data class ESock: - def __init__(self, sock, debug=False): + def __init__(self, sock, debug=False, disconnect_callback=None): self._sock = sock self.address, self.port = self._sock.getpeername() self.debug = debug + self.disconnect_callback = disconnect_callback def __getattr__(self, attr): if attr == "recv": @@ -47,6 +48,8 @@ class ESock: metadata = struct.unpack("cQ16s", raw_metadata) except struct.error: Logging.error("Invalid metadata layout: '%s:%d'" % (self.address, self.port)) + if self.disconnect_callback != None: + self.disconnect_callback() self._sock.close() return None, "" data_type = metadata[0] @@ -66,6 +69,8 @@ class ESock: data = convert_data(data, data_type) except ConvertFailedError: Logging.error("Invalid data type: '%s:%d'" % (self.address, self.port)) + if self.disconnect_callback != None: + self.disconnect_callback() self._sock.close() return None, "" if self.debug: