Added support for a disconnect callback
This commit is contained in:
parent
b68c284531
commit
d04a29c018
1 changed files with 6 additions and 1 deletions
|
@ -23,10 +23,11 @@ def convert_data(data, data_type):
|
||||||
return data
|
return data
|
||||||
|
|
||||||
class ESock:
|
class ESock:
|
||||||
def __init__(self, sock, debug=False):
|
def __init__(self, sock, debug=False, disconnect_callback=None):
|
||||||
self._sock = sock
|
self._sock = sock
|
||||||
self.address, self.port = self._sock.getpeername()
|
self.address, self.port = self._sock.getpeername()
|
||||||
self.debug = debug
|
self.debug = debug
|
||||||
|
self.disconnect_callback = disconnect_callback
|
||||||
|
|
||||||
def __getattr__(self, attr):
|
def __getattr__(self, attr):
|
||||||
if attr == "recv":
|
if attr == "recv":
|
||||||
|
@ -47,6 +48,8 @@ class ESock:
|
||||||
metadata = struct.unpack("cQ16s", raw_metadata)
|
metadata = struct.unpack("cQ16s", raw_metadata)
|
||||||
except struct.error:
|
except struct.error:
|
||||||
Logging.error("Invalid metadata layout: '%s:%d'" % (self.address, self.port))
|
Logging.error("Invalid metadata layout: '%s:%d'" % (self.address, self.port))
|
||||||
|
if self.disconnect_callback != None:
|
||||||
|
self.disconnect_callback()
|
||||||
self._sock.close()
|
self._sock.close()
|
||||||
return None, ""
|
return None, ""
|
||||||
data_type = metadata[0]
|
data_type = metadata[0]
|
||||||
|
@ -66,6 +69,8 @@ class ESock:
|
||||||
data = convert_data(data, data_type)
|
data = convert_data(data, data_type)
|
||||||
except ConvertFailedError:
|
except ConvertFailedError:
|
||||||
Logging.error("Invalid data type: '%s:%d'" % (self.address, self.port))
|
Logging.error("Invalid data type: '%s:%d'" % (self.address, self.port))
|
||||||
|
if self.disconnect_callback != None:
|
||||||
|
self.disconnect_callback()
|
||||||
self._sock.close()
|
self._sock.close()
|
||||||
return None, ""
|
return None, ""
|
||||||
if self.debug:
|
if self.debug:
|
||||||
|
|
Reference in a new issue