const Sleeper = struct 793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809const Sleeper = struct {
queue: c.dispatch.queue_t,
fiber: *Fiber,
fn init(queue: c.dispatch.queue_t, fiber: *Fiber) Sleeper {
queue.as_object().retain();
return .{ .queue = queue, .fiber = fiber };
}
fn wake(context: ?*anyopaque) callconv(.c) void {
const sleeper: *Sleeper = @ptrCast(@alignCast(context));
const queue = sleeper.queue;
sleeper.queue = undefined;
queue.async(sleeper.fiber, &Fiber.@"resume");
queue.as_object().release();
}
}