-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtempCodeRunnerFile.py
More file actions
44 lines (37 loc) · 1.67 KB
/
tempCodeRunnerFile.py
File metadata and controls
44 lines (37 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import socket
import pickle
from inventory import Inventory
def handle_request(command, addr, server_socket, inventory):
try:
if command in ["ADD", "UPDATE"]:
obj_data, _ = server_socket.recvfrom(4096)
obj = pickle.loads(obj_data)
if command == "ADD":
inventory.add(obj)
server_socket.sendto(pickle.dumps("Added."), addr)
else:
result = inventory.update(obj.id, obj)
server_socket.sendto(pickle.dumps("Updated." if result else "Not found."), addr)
elif command == "LIST":
server_socket.sendto(pickle.dumps(inventory.list_all()), addr)
elif command == "SEARCH":
id_data, _ = server_socket.recvfrom(4096)
result = inventory.find(pickle.loads(id_data))
server_socket.sendto(pickle.dumps(result if result else "Not found."), addr)
elif command == "DELETE":
id_data, _ = server_socket.recvfrom(4096)
result = inventory.delete(pickle.loads(id_data))
server_socket.sendto(pickle.dumps("Deleted." if result else "Not found."), addr)
else:
server_socket.sendto(pickle.dumps("Invalid command."), addr)
except Exception as e:
server_socket.sendto(pickle.dumps(f"Error: {str(e)}"), addr)
if __name__ == "__main__":
inventory = Inventory()
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(("localhost", 5001))
print("UDP Server running on port 5001")
while True:
cmd_data, addr = server.recvfrom(4096)
command = pickle.loads(cmd_data)
handle_request(command, addr, server, inventory)