class IO_Handler(socketserver.BaseRequestHandler):
- def __init__(self, *args, socket_class=PlomSocket, **kwargs):
- self.socket_class = socket_class
+ def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def handle(self):
import uuid
import queue
import threading
- if self.socket_class == PlomSocketSSL:
- plom_socket = self.socket_class(self.request, server_side=True,
- certfile=self.server.certfile,
- keyfile=self.server.keyfile)
+ if self.server.socket_class == PlomSocketSSL:
+ plom_socket = self.server.socket_class(self.request,
+ server_side=True,
+ certfile=self.server.certfile,
+ keyfile=self.server.keyfile)
else:
- plom_socket = self.socket_class(self.request)
+ plom_socket = self.server.socket_class(self.request)
print('CONNECTION FROM:', str(self.client_address))
connection_id = uuid.uuid4()
queue_in = queue.Queue()
-class IO_HandlerSSL(IO_Handler):
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, socket_class=PlomSocketSSL, **kwargs)
-
-
-
class PlomTCPServer(socketserver.ThreadingTCPServer):
"""Bind together threaded IO handling server and message queue.
"""
- def __init__(self, queue, port, host='127.0.0.1', io_handler=IO_Handler, *args, **kwargs):
- super().__init__((host, port), io_handler, *args, **kwargs)
+ def __init__(self, queue, port, host='127.0.0.1', *args, **kwargs):
+ super().__init__((host, port), IO_Handler, *args, **kwargs)
+ self.socket_class = PlomSocket
self.queue_out = queue
self.daemon_threads = True # Else, server's threads have daemon=False.
self.clients = {}
class PlomTCPServerSSL(PlomTCPServer):
def __init__(self, *args, certfile=None, keyfile=None, **kwargs):
+ super().__init__(*args, host='0.0.0.0', **kwargs)
self.certfile = certfile
self.keyfile = keyfile
- super().__init__(*args, host='0.0.0.0', io_handler=IO_HandlerSSL, **kwargs)
+ self.socket_class = PlomSocketSSL