@@ -88,7 +88,7 @@ pub fn init(self: *EventClock, allocator: Allocator, config: Config, io_handle:
8888 .allocator = allocator ,
8989 .io = io_handle ,
9090 .clock = undefined ,
91- .waiters = WaiterQueue .init ( allocator , {}),
91+ .waiters = WaiterQueue .initContext ( {}),
9292 };
9393 self .clock = SlotClock .init (config , TimeSource .fromIo (& self .io )) catch return error .InvalidConfig ;
9494}
@@ -124,7 +124,8 @@ pub fn deinit(self: *EventClock) void {
124124 self .epoch_snapshot .deinit (self .allocator );
125125 self .slot_listeners .deinit (self .allocator );
126126 self .epoch_listeners .deinit (self .allocator );
127- self .waiters .deinit ();
127+ self .waiters .deinit (self .allocator );
128+ self .* = undefined ;
128129}
129130
130131// ── Listener API ──
@@ -310,7 +311,7 @@ pub fn waitForSlot(self: *EventClock, target: Slot) Error!WaitForSlotResult {
310311 self .allocator .destroy (state );
311312 return WaitForSlotResult .immediate (error .Aborted );
312313 }
313- self .waiters .add ( .{ .target = target , .state = state }) catch return error .OutOfMemory ;
314+ self .waiters .push ( self . allocator , .{ .target = target , .state = state }) catch return error .OutOfMemory ;
314315 self .dispatchWaiters (self .clock .current_slot );
315316
316317 return .{
@@ -329,7 +330,7 @@ pub fn cancelWait(self: *EventClock, result: *WaitForSlotResult) void {
329330 // won't dereference the freed state pointer.
330331 for (self .waiters .items , 0.. ) | entry , i | {
331332 if (entry .state == state ) {
332- _ = self .waiters .removeIndex (i );
333+ _ = self .waiters .popIndex (i );
333334 break ;
334335 }
335336 }
@@ -395,14 +396,14 @@ fn dispatchWaiters(self: *EventClock, current_slot: ?Slot) void {
395396 const slot = current_slot orelse return ;
396397 while (self .waiters .peek ()) | head | {
397398 if (head .target > slot ) break ;
398- const waiter = self .waiters .remove () ;
399+ const waiter = self .waiters .pop () .? ;
399400 waiter .state .aborted = false ;
400401 waiter .state .event .set (waiter .state .io );
401402 }
402403}
403404
404405fn abortAllWaiters (self : * EventClock ) void {
405- while (self .waiters .removeOrNull ()) | waiter | {
406+ while (self .waiters .pop ()) | waiter | {
406407 waiter .state .aborted = true ;
407408 waiter .state .event .set (waiter .state .io );
408409 }
0 commit comments