about summary refs log tree commit diff stats
path: root/src/server/main.cpp
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-03-23 19:09:52 +0100
committerChristian Krinitsin <mail@krinitsin.com>2025-03-23 19:09:52 +0100
commiteef27810ce34d00d1d19a7ac6fbce794df4a9708 (patch)
tree834b82942ded2b27ec6a177302cd449c0011dc5a /src/server/main.cpp
parent03ad55130b4f0047eb64d3cc9947b98f0130623e (diff)
downloadBT-Programming-Assignment-eef27810ce34d00d1d19a7ac6fbce794df4a9708.tar.gz
BT-Programming-Assignment-eef27810ce34d00d1d19a7ac6fbce794df4a9708.zip
add server-shutdown with <Ctrl+C>
Diffstat (limited to 'src/server/main.cpp')
-rw-r--r--src/server/main.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/server/main.cpp b/src/server/main.cpp
index 75939e0..c20cde9 100644
--- a/src/server/main.cpp
+++ b/src/server/main.cpp
@@ -1,3 +1,4 @@
+#include <csignal>
 #include <cstdint>
 #include <iostream>
 #include <stdexcept>
@@ -5,6 +6,21 @@
 
 #include "shared_memory_server.h"
 
+Server<int, int> shm;
+
+/**
+ * @brief Shuts the server down, when pressing <Ctrl+C>.
+ *
+ * @param signal Specifies the signal, which was caught.
+ */
+void signal_handler(int signal) {
+    if (signal == SIGINT) {
+        std::cout << "Server shutting down" << '\n';
+        shm.terminate_server();
+        exit(0);
+    }
+}
+
 int main(int argc, char* argv[])
 {
     if (argc != 2) {
@@ -20,7 +36,9 @@ int main(int argc, char* argv[])
         return 1;
     }
 
-    Server<int, int> shm(size);
+    shm.initialize_hashtable(size);
+
+    std::signal(SIGINT, signal_handler);
 
     shm.process_requests();