abots/abots/net/prefix_socket_server.py

38 lines
1.1 KiB
Python
Executable File

"""
net/PrefixSocketServer
================
TODO:
* Add logging to broken pipe exceptions
"""
from abots.net import SocketServer
class PrefixSocketServer(SocketServer):
def __init__(self, host, port, listeners=5, buffer_size=4096,
secure=False, timeout=None, daemon=False):
args = host, port, listeners, buffer_size, secure, timeout, daemon
super().__init__(*args)
def _package_message(self, message, *args):
if len(args) > 0:
formatted = message.format(*args)
else:
formatted = message
packaged = pack(">I", len(formatted)) + formatted.encode()
return packaged
# Packages a message and sends it to socket
def send_message(self, uuid, message, *args):
sock = self._sock_from_uuid(uuid)
if sock is None:
return None
formatted = self._package_message(message)
try:
sock.send(formatted)
# The socket can either be broken or no longer open at all
except (BrokenPipeError, OSError) as e:
return