prefect server in zig
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}