diff --git a/python-server/exec_server.py b/python-server/exec_server.py old mode 100644 new mode 100755 index 90b5b7d..59cd8cb --- a/python-server/exec_server.py +++ b/python-server/exec_server.py @@ -1,6 +1,7 @@ -#/usr/bin/python3 +#!/usr/bin/python3 + import socketserver -import server interface +import server_interface class AppRequestHandler(socketserver.BaseRequestHandler): def __init__(self, request, client_address, server): @@ -11,13 +12,29 @@ class AppRequestHandler(socketserver.BaseRequestHandler): return socketserver.BaseRequestHandler.setup(self) def handle(self): - data = self.request.recv(1024) - retval = server_interface.parse_request(data) - self.request.send(retval) + data = b"" + while True: + tmp = self.request.recv(1024) + if not tmp or b"\nterminate\n" in tmp: + if len(tmp) > len("\nterminate\n"): + data += tmp[:-len("\nterminate\n")] + break + data += tmp + print("Request: {}".format(data)) + retval = server_interface.parse_request(data) + self.request.send(retval) + self.request.send(b"terminate\n") + print("Replied with: {}".format(retval)) return def finish(self): return socketserver.BaseRequestHandler.finish(self) def start_server(): - server = socketserver.Server(("localhost",7100),AppRequestHandler) + socketserver.TCPServer.allow_reuse_address = True + server = socketserver.TCPServer(("0.0.0.0",7100),AppRequestHandler) + server.serve_forever() + + +if __name__ == "__main__": + start_server() diff --git a/python-server/server_interface.py b/python-server/server_interface.py index 4309786..c9f6b65 100644 --- a/python-server/server_interface.py +++ b/python-server/server_interface.py @@ -1,3 +1,31 @@ +def parse_request(data): + ''' parse request and call correct function ''' + + # echo/test connection + cleared_data = is_data_type(b"ECHOREQUEST,",data) + if cleared_data: + return cleared_data + cleared_data = is_data_type(b"AUDIO_TRANSMISSION,",data) + if cleared_data: + with open("test.wav","wb") as f: + f.write(cleared_data) + return b"SUCCESS" + + # other shit + return b"UNRECOGNIZED_SERVER_OPTION\n" + + + +def is_data_type(tag,data): + data = data.strip(b"\n") + if data.startswith(tag): + ret = data.split(tag)[1] + if not ret: + ret = b"NULL\n" + return ret + return None + + def reply_logs(loglevel=0,lines=100): ''' replies with recent logs ''' pass @@ -21,3 +49,5 @@ def recive_transcribe_request(audiofile): ''' saves and transcribes and audiofile ''' pass +def android_unittest_transcribe_request(audiofile): + ''' the android unittests append a special keyword, requests are dummy handled '''