const std = @import("std"); const memora = @import("memora"); pub const std_options = std.Options { .logFn = memora.log.handler, }; fn signal_handler(signo: i32) callconv(.c) void { if (signo == std.os.linux.SIG.INT) { server.deinit(); std.process.exit(0); } } fn register_sigaction() void { var sa = std.os.linux.Sigaction{ .handler = .{ .handler = signal_handler }, .mask = std.mem.zeroes(std.os.linux.sigset_t), .flags = 0, }; _ = std.os.linux.sigaction(std.os.linux.SIG.INT, &sa, null); } var server = memora.Server{}; pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; defer std.debug.assert(gpa.deinit() == .ok); const allocator = gpa.allocator(); const address = try std.net.Address.parseIpAndPort("0.0.0.0:8080"); try server.init(address, allocator); register_sigaction(); server.run(allocator); }