| ... | ... | @@ -78,14 +78,9 @@ pub const Request = struct { |
| 78 | 78 | |
| 79 | 79 | /// data - just the inner references - must live until pwritev promise completes. |
| 80 | 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 | 81 | // workaround for https://github.com/ziglang/zig/issues/1194 |
| 85 | | var my_handle: promise = undefined; |
| 86 | | suspend |p| { |
| 87 | | my_handle = p; |
| 88 | | resume p; |
| 82 | suspend { |
| 83 | resume @handle(); |
| 89 | 84 | } |
| 90 | 85 | |
| 91 | 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 | 109 | .TickNode = event.Loop.NextTickNode{ |
| 115 | 110 | .prev = undefined, |
| 116 | 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 | 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 | 128 | //defer loop.allocator.free(data_dupe); |
| 134 | 129 | |
| 135 | 130 | // workaround for https://github.com/ziglang/zig/issues/1194 |
| 136 | | var my_handle: promise = undefined; |
| 137 | | suspend |p| { |
| 138 | | my_handle = p; |
| 139 | | resume p; |
| 131 | suspend { |
| 132 | resume @handle(); |
| 140 | 133 | } |
| 141 | 134 | |
| 142 | 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 | 158 | .TickNode = event.Loop.NextTickNode{ |
| 166 | 159 | .prev = undefined, |
| 167 | 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 | 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 | 173 | |
| 181 | 174 | pub async fn openRead(loop: *event.Loop, path: []const u8) os.File.OpenError!os.FileHandle { |
| 182 | 175 | // workaround for https://github.com/ziglang/zig/issues/1194 |
| 183 | | var my_handle: promise = undefined; |
| 184 | | suspend |p| { |
| 185 | | my_handle = p; |
| 186 | | resume p; |
| 176 | suspend { |
| 177 | resume @handle(); |
| 187 | 178 | } |
| 188 | 179 | |
| 189 | 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 | 194 | .TickNode = event.Loop.NextTickNode{ |
| 204 | 195 | .prev = undefined, |
| 205 | 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 | 204 | loop.linuxFsRequest(&req_node); |
| 214 | 205 | } |
| 215 | 206 | |
| ... | ... | @@ -223,10 +214,8 @@ pub async fn openReadWrite( |
| 223 | 214 | mode: os.File.Mode, |
| 224 | 215 | ) os.File.OpenError!os.FileHandle { |
| 225 | 216 | // workaround for https://github.com/ziglang/zig/issues/1194 |
| 226 | | var my_handle: promise = undefined; |
| 227 | | suspend |p| { |
| 228 | | my_handle = p; |
| 229 | | resume p; |
| 217 | suspend { |
| 218 | resume @handle(); |
| 230 | 219 | } |
| 231 | 220 | |
| 232 | 221 | const path_with_null = try std.cstr.addNullByte(loop.allocator, path); |
| ... | ... | @@ -247,13 +236,13 @@ pub async fn openReadWrite( |
| 247 | 236 | .TickNode = event.Loop.NextTickNode{ |
| 248 | 237 | .prev = undefined, |
| 249 | 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 | 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 | 300 | /// contents must remain alive until writeFile completes. |
| 312 | 301 | pub async fn writeFileMode(loop: *event.Loop, path: []const u8, contents: []const u8, mode: os.File.Mode) !void { |
| 313 | 302 | // workaround for https://github.com/ziglang/zig/issues/1194 |
| 314 | | var my_handle: promise = undefined; |
| 315 | | suspend |p| { |
| 316 | | my_handle = p; |
| 317 | | resume p; |
| 303 | suspend { |
| 304 | resume @handle(); |
| 318 | 305 | } |
| 319 | 306 | |
| 320 | 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 | 323 | .TickNode = event.Loop.NextTickNode{ |
| 337 | 324 | .prev = undefined, |
| 338 | 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 | 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 | 407 | |
| 421 | 408 | async fn watchEventPutter(inotify_fd: i32, wd: i32, channel: *event.Channel(Watch.Event), out_watch: **Watch) void { |
| 422 | 409 | // TODO https://github.com/ziglang/zig/issues/1194 |
| 423 | | var my_handle: promise = undefined; |
| 424 | | suspend |p| { |
| 425 | | my_handle = p; |
| 426 | | resume p; |
| 410 | suspend { |
| 411 | resume @handle(); |
| 427 | 412 | } |
| 428 | 413 | |
| 429 | 414 | var watch = Watch{ |
| 430 | | .putter = my_handle, |
| 415 | .putter = @handle(), |
| 431 | 416 | .channel = channel, |
| 432 | 417 | }; |
| 433 | 418 | out_watch.* = &watch; |