Skip to content

Commit bab4296

Browse files
bobfkarlseguin
authored andcommitted
Latest Zig SinglyLinkedList changes (#117)
1 parent 0ff1094 commit bab4296

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/httpz.zig

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,11 @@ pub fn Server(comptime H: type) type {
246246
middlewares: []const Middleware(H) = &.{},
247247
};
248248

249+
const MiddlewareItem = struct {
250+
middleware: Middleware(H),
251+
node: std.SinglyLinkedList.Node = .{},
252+
};
253+
249254
return struct {
250255
handler: H,
251256
config: Config,
@@ -259,7 +264,7 @@ pub fn Server(comptime H: type) type {
259264
_max_request_per_connection: usize,
260265
_middlewares: []const Middleware(H),
261266
_websocket_state: websocket.server.WorkerState,
262-
_middleware_registry: std.SinglyLinkedList(Middleware(H)),
267+
_middleware_registry: std.SinglyLinkedList,
263268

264269
const Self = @This();
265270
const Worker = if (blockingMode()) worker.Blocking(*Self, WebsocketHandler) else worker.NonBlocking(*Self, WebsocketHandler);
@@ -325,7 +330,8 @@ pub fn Server(comptime H: type) type {
325330

326331
var node = self._middleware_registry.first;
327332
while (node) |n| {
328-
n.data.deinit();
333+
const item: *MiddlewareItem = @fieldParentPtr("node", n);
334+
item.middleware.deinit();
329335
node = n.next;
330336
}
331337

@@ -575,7 +581,7 @@ pub fn Server(comptime H: type) type {
575581
pub fn middleware(self: *Self, comptime M: type, config: M.Config) !Middleware(H) {
576582
const arena = self.arena;
577583

578-
const node = try arena.create(std.SinglyLinkedList(Middleware(H)).Node);
584+
const node = try arena.create(MiddlewareItem);
579585
errdefer arena.destroy(node);
580586

581587
const m = try arena.create(M);
@@ -590,8 +596,8 @@ pub fn Server(comptime H: type) type {
590596
}
591597

592598
const iface = Middleware(H).init(m);
593-
node.data = iface;
594-
self._middleware_registry.prepend(node);
599+
node.*.middleware = iface;
600+
self._middleware_registry.prepend(&node.node);
595601

596602
return iface;
597603
}

0 commit comments

Comments
 (0)