aboutsummaryrefslogtreecommitdiff
path: root/lib/std/event
diff options
context:
space:
mode:
authorMatthew Knight <mattnite@protonmail.com>2020-10-14 18:33:53 -0700
committerGitHub <noreply@github.com>2020-10-14 21:33:53 -0400
commit352976ed236030d88d5a7332433b0b37bf4bc41c (patch)
tree814ec95711cb6f473def9e7f4e9e0bdd17cd58cd /lib/std/event
parentaa5ff867a2128249500a6757e48b6b2a0282caae (diff)
downloadzig-352976ed236030d88d5a7332433b0b37bf4bc41c.tar.gz
zig-352976ed236030d88d5a7332433b0b37bf4bc41c.zip
Event Channel: updated linked list node initialization (#6652)
fixed node init method
Diffstat (limited to 'lib/std/event')
-rw-r--r--lib/std/event/channel.zig46
1 files changed, 26 insertions, 20 deletions
diff --git a/lib/std/event/channel.zig b/lib/std/event/channel.zig
index de5b2c67ab..b7c55360d7 100644
--- a/lib/std/event/channel.zig
+++ b/lib/std/event/channel.zig
@@ -94,11 +94,13 @@ pub fn Channel(comptime T: type) type {
/// buffer, or in the case of a zero size buffer, when the item has been retrieved by a getter.
/// Or when the channel is destroyed.
pub fn put(self: *SelfChannel, data: T) void {
- var my_tick_node = Loop.NextTickNode.init(@frame());
- var queue_node = std.atomic.Queue(PutNode).Node.init(PutNode{
- .tick_node = &my_tick_node,
- .data = data,
- });
+ var my_tick_node = Loop.NextTickNode{ .data = @frame() };
+ var queue_node = std.atomic.Queue(PutNode).Node{
+ .data = PutNode{
+ .tick_node = &my_tick_node,
+ .data = data,
+ },
+ };
suspend {
self.putters.put(&queue_node);
@@ -113,13 +115,15 @@ pub fn Channel(comptime T: type) type {
pub fn get(self: *SelfChannel) callconv(.Async) T {
// TODO https://github.com/ziglang/zig/issues/2765
var result: T = undefined;
- var my_tick_node = Loop.NextTickNode.init(@frame());
- var queue_node = std.atomic.Queue(GetNode).Node.init(GetNode{
- .tick_node = &my_tick_node,
- .data = GetNode.Data{
- .Normal = GetNode.Normal{ .ptr = &result },
+ var my_tick_node = Loop.NextTickNode{ .data = @frame() };
+ var queue_node = std.atomic.Queue(GetNode).Node{
+ .data = GetNode{
+ .tick_node = &my_tick_node,
+ .data = GetNode.Data{
+ .Normal = GetNode.Normal{ .ptr = &result },
+ },
},
- });
+ };
suspend {
self.getters.put(&queue_node);
@@ -145,17 +149,19 @@ pub fn Channel(comptime T: type) type {
// TODO integrate this function with named return values
// so we can get rid of this extra result copy
var result: ?T = null;
- var my_tick_node = Loop.NextTickNode.init(@frame());
- var or_null_node = std.atomic.Queue(*std.atomic.Queue(GetNode).Node).Node.init(undefined);
- var queue_node = std.atomic.Queue(GetNode).Node.init(GetNode{
- .tick_node = &my_tick_node,
- .data = GetNode.Data{
- .OrNull = GetNode.OrNull{
- .ptr = &result,
- .or_null = &or_null_node,
+ var my_tick_node = Loop.NextTickNode{ .data = @frame() };
+ var or_null_node = std.atomic.Queue(*std.atomic.Queue(GetNode).Node).Node{ .data = undefined };
+ var queue_node = std.atomic.Queue(GetNode).Node{
+ .data = GetNode{
+ .tick_node = &my_tick_node,
+ .data = GetNode.Data{
+ .OrNull = GetNode.OrNull{
+ .ptr = &result,
+ .or_null = &or_null_node,
+ },
},
},
- });
+ };
or_null_node.data = &queue_node;
suspend {