This commit is contained in:
2026-08-11 10:55:02 +02:00
commit d1a98c5da2
17 changed files with 2033 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
package main
import "base:intrinsics"
import "core:c"
import "core:c/libc"
import "core:sys/posix"
shutdown_requested: libc.sig_atomic_t
server_listener_fd: libc.sig_atomic_t = -1
shutdown_signal_handler :: proc "c" (signal: c.int) {
intrinsics.atomic_store(&shutdown_requested, 1)
fd := intrinsics.atomic_exchange(&server_listener_fd, libc.sig_atomic_t(-1))
if fd >= 0 {
_ = posix.close(posix.FD(fd))
}
}
register_server_listener :: proc(fd: posix.FD) {
intrinsics.atomic_store(&server_listener_fd, libc.sig_atomic_t(fd))
}
clear_server_listener :: proc() {
intrinsics.atomic_store(&server_listener_fd, libc.sig_atomic_t(-1))
}
install_shutdown_handlers :: proc() {
libc.signal(libc.SIGINT, shutdown_signal_handler)
libc.signal(libc.SIGTERM, shutdown_signal_handler)
}
should_shutdown :: proc() -> bool {
return intrinsics.atomic_load(&shutdown_requested) == 1
}