forked from INF142/team-local-tactics
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDatabaseServer.py
58 lines (40 loc) · 1.44 KB
/
DatabaseServer.py
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
45
46
47
48
49
50
51
52
53
54
55
56
from logging import shutdown
import pickle
import socket
from DatabaseService import createConnection, selectAllChamps, saveMatchToDatabase
from core import Match
class DatabaseServer:
def __init__(self, PORT) -> None:
self.SOCKET = socket.socket()
self.connection = 0
print("Socket created successfully")
self.SOCKET.bind(("localhost", PORT))
print(f"Socket bound to localhost with port {PORT}")
print("Database Server running...")
self.SOCKET.listen()
print("Waiting for connections...")
self.DBconn = createConnection("TNTDatabase")
self.connectionLoop()
def connectionLoop(self):
while True:
# Accept connection
self.connection, addr = self.SOCKET.accept()
print(f"Got connection from {addr}")
# Send champions to Server.
self.connection.send(pickle.dumps(selectAllChamps(self.DBconn)))
break
while True:
data = self.connection.recv(4098)
if not data:
continue
data = pickle.loads(data)
if type(data) is Match:
saveMatchToDatabase(self.DBconn, data)
break
self.shutdown()
def shutdown(self):
self.SOCKET.close()
print("Server shutting down")
if __name__ == "__main__":
PORT = 6960
database = DatabaseServer(PORT)