def __init__(self): self.logger = logging.getLogger(Config.LOGGING_NAME+".SocketServer") EventHandler.addListener("onQuitWebSocketServer", Events.SERVER_SHUTDOWN, self.stop) HOST = ('', 1998) self.server = socketserver.ThreadingTCPServer(HOST, WebRequestHandler) self.logger.info("Binding SocketServer to %s", HOST)
def handle(self): self.running = True EventHandler.addListener("onQuit"+str(current_thread().ident), Events.SERVER_SHUTDOWN, self.shutdown) self.logger = logging.getLogger(Config.LOGGING_NAME+".SocketServer.RequestHandler") #self.logger.debug("Connection from %s", self.client_address) packetStarted = False packetContents = "" while self.running: receivedData = self.request.recv(1) if not receivedData: break # If there is no dataz, then probably the client disconnected. try: receivedData = receivedData.decode("utf-8") except: continue if not packetStarted: # If the packetStarted flag has not been set, set it when "{" is received if receivedData == "~": packetStarted = True packetContents = packetContents + "{" elif packetStarted: # If the packet has started, append stuff to it until "}" is received if receivedData == "~": packetContents = packetContents + "}" packetStarted = False # If the packet is valid, then fire an event - if not report it through logging try: EventHandler.callEvent(Events.PACKET_RECEIVED, (literal_eval(packetContents), self.request.send)) packetContents = "" packetContents = "" except ValueError: self.logger.error(packetContents) self.logger.error("Malformed packet! - VALUE ERROR") packetContents = "" break except SyntaxError: self.logger.error(packetContents) self.logger.error("Malformed packet! - SYNTAX ERROR") packetContents = "" break else: packetContents = packetContents + receivedData self.request.close()
def start(self): self.initLogging() self.hexapod = Hexapod() self.hexapod.start() self.queuemanager = QueueManager() self.webSocketServer = WebSocketServer() self.webSocketServer.start() EventHandler.addListener("eacho", Events.PACKET_RECEIVED, self.onPacketReceived) EventHandler.addListener("onClientConnect", Events.NEW_CLIENT_CONTROLLER, self.onNewClientController) EventHandler.addListener("onClientTimeUp", Events.CLIENT_TIME_UP, self.onClientTimeUp) self.loop()