diff --git a/dcs/main.py b/dcs/main.py index e69de29..46a9676 100644 --- a/dcs/main.py +++ b/dcs/main.py @@ -0,0 +1,3 @@ +# -*- coding: UTF-8 -*- +import server +import requestHandler diff --git a/dcs/requestHandler.py b/dcs/requestHandler.py new file mode 100644 index 0000000..a26c914 --- /dev/null +++ b/dcs/requestHandler.py @@ -0,0 +1,31 @@ +import socket +import threading +import json +import struct + + +class RequestHandler(threading.Thread): + def __init__(self, file_server: 'FileServer', client_socket: 'socket.socket', request_map: 'dict'): + super().__init__() + self.file_server = file_server + self.client_socket = client_socket + self.request_map = request_map + self.daemon = True + pass + + def run(self) -> None: + try: + if self.request_map['action'] == 'getFileSize': + print(f"[REQUEST] getFileSize") + response = { + 'fileSize': self.file_server.get_file_size() + } + response_binary = json.JSONEncoder().encode(response).encode("utf-8") + response_binary_len = len(response_binary) + response_binary_len_binary = struct.pack("!Q", response_binary_len) + + response_binary = response_binary_len_binary + response_binary + self.client_socket.sendall(response_binary) + print(f"[RESPONSE] file size: {response['fileSize']}, header size: {response_binary_len}") + finally: + self.client_socket.close() diff --git a/dcs/server.py b/dcs/server.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/dcs/server.py @@ -0,0 +1 @@ +