prefect server in zig
at main 41 lines 1.5 kB view raw
1const std = @import("std"); 2const log = @import("logging.zig"); 3 4pub const event_persister = @import("services/event_persister.zig"); 5pub const event_broadcaster = @import("services/event_broadcaster.zig"); 6pub const scheduler = @import("services/scheduler.zig"); 7pub const lease_cleanup = @import("services/lease_cleanup.zig"); 8pub const late_runs = @import("services/late_runs.zig"); 9pub const automations = @import("services/automations.zig"); 10 11pub const Service = struct { 12 name: []const u8, 13 start: *const fn () anyerror!void, 14 stop: *const fn () void, 15}; 16 17const all = [_]Service{ 18 .{ .name = "event_persister", .start = event_persister.start, .stop = event_persister.stop }, 19 .{ .name = "event_broadcaster", .start = event_broadcaster.start, .stop = event_broadcaster.stop }, 20 .{ .name = "scheduler", .start = scheduler.start, .stop = scheduler.stop }, 21 .{ .name = "lease_cleanup", .start = lease_cleanup.start, .stop = lease_cleanup.stop }, 22 .{ .name = "late_runs", .start = late_runs.start, .stop = late_runs.stop }, 23 .{ .name = "automations", .start = automations.start, .stop = automations.stop }, 24}; 25 26pub fn startAll() !void { 27 for (all) |svc| { 28 log.info("services", "starting {s}", .{svc.name}); 29 try svc.start(); 30 } 31} 32 33pub fn stopAll() void { 34 // stop in reverse order 35 var i = all.len; 36 while (i > 0) { 37 i -= 1; 38 log.info("services", "stopping {s}", .{all[i].name}); 39 all[i].stop(); 40 } 41}