Skip to content
Snippets Groups Projects
Commit d5377b42 authored by Sara Savanovic Djordjevic's avatar Sara Savanovic Djordjevic
Browse files

add: server termination on q

parent 38d1d670
No related branches found
No related tags found
1 merge request!1Server
No preview for this file type
...@@ -6,9 +6,12 @@ from consts import DB_NAME, COLLECTION, MONGO_URI, MONGO_CERT_PATH, SSL_CERT_PAT ...@@ -6,9 +6,12 @@ from consts import DB_NAME, COLLECTION, MONGO_URI, MONGO_CERT_PATH, SSL_CERT_PAT
from map.get_markers import get_markers from map.get_markers import get_markers
import atexit import atexit
import ssl import ssl
import keyboard
app = Flask(__name__) app = Flask(__name__)
terminate_server = 0
"""
# Initialise MongoDB connection # Initialise MongoDB connection
try: try:
client = MongoClient(MONGO_URI, client = MongoClient(MONGO_URI,
...@@ -21,7 +24,8 @@ try: ...@@ -21,7 +24,8 @@ try:
print("Connected to MongoDB") print("Connected to MongoDB")
except Exception as e: except Exception as e:
print(f"Failed to connect to MongoDB: {e}") print(f"Failed to connect to MongoDB: {e}")
"""
# Define HTTP class # Define HTTP class
class IceHTTP(BaseHTTPRequestHandler): class IceHTTP(BaseHTTPRequestHandler):
def do_GET(self): def do_GET(self):
...@@ -29,25 +33,30 @@ class IceHTTP(BaseHTTPRequestHandler): ...@@ -29,25 +33,30 @@ class IceHTTP(BaseHTTPRequestHandler):
self.send_response(200) self.send_response(200)
self.send_header("Content-type", "text/plain") self.send_header("Content-type", "text/plain")
self.end_headers() self.end_headers()
self.wfile.write(b"Root path hit!") self.wfile.write(b"Root path hit!")
elif self.path == '/update_map': elif self.path == '/update_map':
# Fetch marker data
markers_data, resp_code = get_markers() markers_data, resp_code = get_markers()
# Set headers
self.send_response(resp_code) self.send_response(resp_code)
self.send_header("Content-type", "application/json") self.send_header("Content-type", "application/json")
self.end_headers() self.end_headers()
# Write the JSON data directly to the response # Write the JSON data to response object
self.wfile.write(markers_data.encode('utf-8')) self.wfile.write(markers_data)
elif self.path == '/test_endpoint': # Listen for pressing of q key to terminate server
self.send_response(200) def on_key_press(server, event):
self.send_header("Content-type", "text/plain") if event.name == 'q':
self.end_headers() print('Terminating server...')
self.wfile.write(b"Test path hit!") server.server_close()
keyboard.unhook_all()
quit()
# Start a server on port 8443 using defined HTTP class # Start a server on port 8443 using self defined HTTP class
if __name__ == "__main__": if __name__ == "__main__":
print("Starting server on port ", PORT) print("Starting server on port ", PORT)
try: try:
...@@ -60,14 +69,11 @@ if __name__ == "__main__": ...@@ -60,14 +69,11 @@ if __name__ == "__main__":
server.socket = ssl_context.wrap_socket(server.socket, server_side=True) server.socket = ssl_context.wrap_socket(server.socket, server_side=True)
print("Server running on port ", PORT) print("Server running on port ", PORT)
server.serve_forever()
except Exception as e:
print(f"Failed to start server on port {PORT}: {e}")
# Register key press event handler
keyboard.on_press(lambda event: on_key_press(server, event))
def on_termination(): server.serve_forever()
print("Server is terminating.")
# Register the function to be called on exit except Exception as e:
atexit.register(on_termination) print(f"Failed to start server on port {PORT}: {e}")
\ No newline at end of file
No preview for this file type
...@@ -28,6 +28,7 @@ def get_markers(): ...@@ -28,6 +28,7 @@ def get_markers():
MarkerTemplate(measurement3, 20.0-measurement3.accuracy, "Yellow"), MarkerTemplate(measurement3, 20.0-measurement3.accuracy, "Yellow"),
] ]
# NB: return test data as JSON
return json.dumps([marker.to_dict() for marker in testData]), 200 return json.dumps([marker.to_dict() for marker in testData]), 200
except Exception as e: except Exception as e:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment