| ... | @@ -78,14 +78,9 @@ pub const Request = struct { | ... | @@ -78,14 +78,9 @@ pub const Request = struct { |
| 78 | | 78 | |
| 79 | /// data - just the inner references - must live until pwritev promise completes. | 79 | /// data - just the inner references - must live until pwritev promise completes. |
| 80 | pub async fn pwritev(loop: *event.Loop, fd: os.FileHandle, offset: usize, data: []const []const u8) !void { | 80 | pub async fn pwritev(loop: *event.Loop, fd: os.FileHandle, offset: usize, data: []const []const u8) !void { |
| 81 | //const data_dupe = try mem.dupe(loop.allocator, []const u8, data); | | |
| 82 | //defer loop.allocator.free(data_dupe); | | |
| 83 | | | |
| 84 | // workaround for https://github.com/ziglang/zig/issues/1194 | 81 | // workaround for https://github.com/ziglang/zig/issues/1194 |
| 85 | var my_handle: promise = undefined; | 82 | suspend { |
| 86 | suspend |p| { | 83 | resume @handle(); |
| 87 | my_handle = p; | | |
| 88 | resume p; | | |
| 89 | } | 84 | } |
| 90 | | 85 | |
| 91 | const iovecs = try loop.allocator.alloc(os.linux.iovec_const, data.len); | 86 | const iovecs = try loop.allocator.alloc(os.linux.iovec_const, data.len); |
| ... | @@ -114,13 +109,13 @@ pub async fn pwritev(loop: *event.Loop, fd: os.FileHandle, offset: usize, data: | ... | @@ -114,13 +109,13 @@ pub async fn pwritev(loop: *event.Loop, fd: os.FileHandle, offset: usize, data: |
| 114 | .TickNode = event.Loop.NextTickNode{ | 109 | .TickNode = event.Loop.NextTickNode{ |
| 115 | .prev = undefined, | 110 | .prev = undefined, |
| 116 | .next = undefined, | 111 | .next = undefined, |
| 117 | .data = my_handle, | 112 | .data = @handle(), |
| 118 | }, | 113 | }, |
| 119 | }, | 114 | }, |
| 120 | }, | 115 | }, |
| 121 | }; | 116 | }; |
| 122 | | 117 | |
| 123 | suspend |_| { | 118 | suspend { |
| 124 | loop.linuxFsRequest(&req_node); | 119 | loop.linuxFsRequest(&req_node); |
| 125 | } | 120 | } |
| 126 | | 121 | |
| ... | @@ -133,10 +128,8 @@ pub async fn preadv(loop: *event.Loop, fd: os.FileHandle, offset: usize, data: [ | ... | @@ -133,10 +128,8 @@ pub async fn preadv(loop: *event.Loop, fd: os.FileHandle, offset: usize, data: [ |
| 133 | //defer loop.allocator.free(data_dupe); | 128 | //defer loop.allocator.free(data_dupe); |
| 134 | | 129 | |
| 135 | // workaround for https://github.com/ziglang/zig/issues/1194 | 130 | // workaround for https://github.com/ziglang/zig/issues/1194 |
| 136 | var my_handle: promise = undefined; | 131 | suspend { |
| 137 | suspend |p| { | 132 | resume @handle(); |
| 138 | my_handle = p; | | |
| 139 | resume p; | | |
| 140 | } | 133 | } |
| 141 | | 134 | |
| 142 | const iovecs = try loop.allocator.alloc(os.linux.iovec, data.len); | 135 | const iovecs = try loop.allocator.alloc(os.linux.iovec, data.len); |
| ... | @@ -165,13 +158,13 @@ pub async fn preadv(loop: *event.Loop, fd: os.FileHandle, offset: usize, data: [ | ... | @@ -165,13 +158,13 @@ pub async fn preadv(loop: *event.Loop, fd: os.FileHandle, offset: usize, data: [ |
| 165 | .TickNode = event.Loop.NextTickNode{ | 158 | .TickNode = event.Loop.NextTickNode{ |
| 166 | .prev = undefined, | 159 | .prev = undefined, |
| 167 | .next = undefined, | 160 | .next = undefined, |
| 168 | .data = my_handle, | 161 | .data = @handle(), |
| 169 | }, | 162 | }, |
| 170 | }, | 163 | }, |
| 171 | }, | 164 | }, |
| 172 | }; | 165 | }; |
| 173 | | 166 | |
| 174 | suspend |_| { | 167 | suspend { |
| 175 | loop.linuxFsRequest(&req_node); | 168 | loop.linuxFsRequest(&req_node); |
| 176 | } | 169 | } |
| 177 | | 170 | |
| ... | @@ -180,10 +173,8 @@ pub async fn preadv(loop: *event.Loop, fd: os.FileHandle, offset: usize, data: [ | ... | @@ -180,10 +173,8 @@ pub async fn preadv(loop: *event.Loop, fd: os.FileHandle, offset: usize, data: [ |
| 180 | | 173 | |
| 181 | pub async fn openRead(loop: *event.Loop, path: []const u8) os.File.OpenError!os.FileHandle { | 174 | pub async fn openRead(loop: *event.Loop, path: []const u8) os.File.OpenError!os.FileHandle { |
| 182 | // workaround for https://github.com/ziglang/zig/issues/1194 | 175 | // workaround for https://github.com/ziglang/zig/issues/1194 |
| 183 | var my_handle: promise = undefined; | 176 | suspend { |
| 184 | suspend |p| { | 177 | resume @handle(); |
| 185 | my_handle = p; | | |
| 186 | resume p; | | |
| 187 | } | 178 | } |
| 188 | | 179 | |
| 189 | const path_with_null = try std.cstr.addNullByte(loop.allocator, path); | 180 | const path_with_null = try std.cstr.addNullByte(loop.allocator, path); |
| ... | @@ -203,13 +194,13 @@ pub async fn openRead(loop: *event.Loop, path: []const u8) os.File.OpenError!os. | ... | @@ -203,13 +194,13 @@ pub async fn openRead(loop: *event.Loop, path: []const u8) os.File.OpenError!os. |
| 203 | .TickNode = event.Loop.NextTickNode{ | 194 | .TickNode = event.Loop.NextTickNode{ |
| 204 | .prev = undefined, | 195 | .prev = undefined, |
| 205 | .next = undefined, | 196 | .next = undefined, |
| 206 | .data = my_handle, | 197 | .data = @handle(), |
| 207 | }, | 198 | }, |
| 208 | }, | 199 | }, |
| 209 | }, | 200 | }, |
| 210 | }; | 201 | }; |
| 211 | | 202 | |
| 212 | suspend |_| { | 203 | suspend { |
| 213 | loop.linuxFsRequest(&req_node); | 204 | loop.linuxFsRequest(&req_node); |
| 214 | } | 205 | } |
| 215 | | 206 | |
| ... | @@ -223,10 +214,8 @@ pub async fn openReadWrite( | ... | @@ -223,10 +214,8 @@ pub async fn openReadWrite( |
| 223 | mode: os.File.Mode, | 214 | mode: os.File.Mode, |
| 224 | ) os.File.OpenError!os.FileHandle { | 215 | ) os.File.OpenError!os.FileHandle { |
| 225 | // workaround for https://github.com/ziglang/zig/issues/1194 | 216 | // workaround for https://github.com/ziglang/zig/issues/1194 |
| 226 | var my_handle: promise = undefined; | 217 | suspend { |
| 227 | suspend |p| { | 218 | resume @handle(); |
| 228 | my_handle = p; | | |
| 229 | resume p; | | |
| 230 | } | 219 | } |
| 231 | | 220 | |
| 232 | const path_with_null = try std.cstr.addNullByte(loop.allocator, path); | 221 | const path_with_null = try std.cstr.addNullByte(loop.allocator, path); |
| ... | @@ -247,13 +236,13 @@ pub async fn openReadWrite( | ... | @@ -247,13 +236,13 @@ pub async fn openReadWrite( |
| 247 | .TickNode = event.Loop.NextTickNode{ | 236 | .TickNode = event.Loop.NextTickNode{ |
| 248 | .prev = undefined, | 237 | .prev = undefined, |
| 249 | .next = undefined, | 238 | .next = undefined, |
| 250 | .data = my_handle, | 239 | .data = @handle(), |
| 251 | }, | 240 | }, |
| 252 | }, | 241 | }, |
| 253 | }, | 242 | }, |
| 254 | }; | 243 | }; |
| 255 | | 244 | |
| 256 | suspend |_| { | 245 | suspend { |
| 257 | loop.linuxFsRequest(&req_node); | 246 | loop.linuxFsRequest(&req_node); |
| 258 | } | 247 | } |
| 259 | | 248 | |
| ... | @@ -311,10 +300,8 @@ pub async fn writeFile(loop: *event.Loop, path: []const u8, contents: []const u8 | ... | @@ -311,10 +300,8 @@ pub async fn writeFile(loop: *event.Loop, path: []const u8, contents: []const u8 |
| 311 | /// contents must remain alive until writeFile completes. | 300 | /// contents must remain alive until writeFile completes. |
| 312 | pub async fn writeFileMode(loop: *event.Loop, path: []const u8, contents: []const u8, mode: os.File.Mode) !void { | 301 | pub async fn writeFileMode(loop: *event.Loop, path: []const u8, contents: []const u8, mode: os.File.Mode) !void { |
| 313 | // workaround for https://github.com/ziglang/zig/issues/1194 | 302 | // workaround for https://github.com/ziglang/zig/issues/1194 |
| 314 | var my_handle: promise = undefined; | 303 | suspend { |
| 315 | suspend |p| { | 304 | resume @handle(); |
| 316 | my_handle = p; | | |
| 317 | resume p; | | |
| 318 | } | 305 | } |
| 319 | | 306 | |
| 320 | const path_with_null = try std.cstr.addNullByte(loop.allocator, path); | 307 | const path_with_null = try std.cstr.addNullByte(loop.allocator, path); |
| ... | @@ -336,13 +323,13 @@ pub async fn writeFileMode(loop: *event.Loop, path: []const u8, contents: []cons | ... | @@ -336,13 +323,13 @@ pub async fn writeFileMode(loop: *event.Loop, path: []const u8, contents: []cons |
| 336 | .TickNode = event.Loop.NextTickNode{ | 323 | .TickNode = event.Loop.NextTickNode{ |
| 337 | .prev = undefined, | 324 | .prev = undefined, |
| 338 | .next = undefined, | 325 | .next = undefined, |
| 339 | .data = my_handle, | 326 | .data = @handle(), |
| 340 | }, | 327 | }, |
| 341 | }, | 328 | }, |
| 342 | }, | 329 | }, |
| 343 | }; | 330 | }; |
| 344 | | 331 | |
| 345 | suspend |_| { | 332 | suspend { |
| 346 | loop.linuxFsRequest(&req_node); | 333 | loop.linuxFsRequest(&req_node); |
| 347 | } | 334 | } |
| 348 | | 335 | |
| ... | @@ -420,14 +407,12 @@ pub fn watchFile(loop: *event.Loop, file_path: []const u8) !*Watch { | ... | @@ -420,14 +407,12 @@ pub fn watchFile(loop: *event.Loop, file_path: []const u8) !*Watch { |
| 420 | | 407 | |
| 421 | async fn watchEventPutter(inotify_fd: i32, wd: i32, channel: *event.Channel(Watch.Event), out_watch: **Watch) void { | 408 | async fn watchEventPutter(inotify_fd: i32, wd: i32, channel: *event.Channel(Watch.Event), out_watch: **Watch) void { |
| 422 | // TODO https://github.com/ziglang/zig/issues/1194 | 409 | // TODO https://github.com/ziglang/zig/issues/1194 |
| 423 | var my_handle: promise = undefined; | 410 | suspend { |
| 424 | suspend |p| { | 411 | resume @handle(); |
| 425 | my_handle = p; | | |
| 426 | resume p; | | |
| 427 | } | 412 | } |
| 428 | | 413 | |
| 429 | var watch = Watch{ | 414 | var watch = Watch{ |
| 430 | .putter = my_handle, | 415 | .putter = @handle(), |
| 431 | .channel = channel, | 416 | .channel = channel, |
| 432 | }; | 417 | }; |
| 433 | out_watch.* = &watch; | 418 | out_watch.* = &watch; |