| ... | @@ -319,21 +319,17 @@ fn buildWasmBinary( | ... | @@ -319,21 +319,17 @@ fn buildWasmBinary( |
| 319 | try sendMessage(child.stdin.?, .update); | 319 | try sendMessage(child.stdin.?, .update); |
| 320 | try sendMessage(child.stdin.?, .exit); | 320 | try sendMessage(child.stdin.?, .exit); |
| 321 | | 321 | |
| 322 | const Header = std.zig.Server.Message.Header; | | |
| 323 | var result: ?Cache.Path = null; | 322 | var result: ?Cache.Path = null; |
| 324 | var result_error_bundle = std.zig.ErrorBundle.empty; | 323 | var result_error_bundle = std.zig.ErrorBundle.empty; |
| 325 | | 324 | |
| 326 | const stdout = poller.fifo(.stdout); | 325 | const stdout = poller.reader(.stdout); |
| 327 | | 326 | |
| 328 | poll: while (true) { | 327 | poll: while (true) { |
| 329 | while (stdout.readableLength() < @sizeOf(Header)) { | 328 | const Header = std.zig.Server.Message.Header; |
| 330 | if (!(try poller.poll())) break :poll; | 329 | while (stdout.buffered().len < @sizeOf(Header)) if (!try poller.poll()) break :poll; |
| 331 | } | 330 | const header = stdout.takeStruct(Header, .little) catch unreachable; |
| 332 | const header = stdout.reader().readStruct(Header) catch unreachable; | 331 | while (stdout.buffered().len < header.bytes_len) if (!try poller.poll()) break :poll; |
| 333 | while (stdout.readableLength() < header.bytes_len) { | 332 | const body = stdout.take(header.bytes_len) catch unreachable; |
| 334 | if (!(try poller.poll())) break :poll; | | |
| 335 | } | | |
| 336 | const body = stdout.readableSliceOfLen(header.bytes_len); | | |
| 337 | | 333 | |
| 338 | switch (header.tag) { | 334 | switch (header.tag) { |
| 339 | .zig_version => { | 335 | .zig_version => { |
| ... | @@ -373,15 +369,11 @@ fn buildWasmBinary( | ... | @@ -373,15 +369,11 @@ fn buildWasmBinary( |
| 373 | }, | 369 | }, |
| 374 | else => {}, // ignore other messages | 370 | else => {}, // ignore other messages |
| 375 | } | 371 | } |
| 376 | | | |
| 377 | stdout.discard(body.len); | | |
| 378 | } | 372 | } |
| 379 | | 373 | |
| 380 | const stderr = poller.fifo(.stderr); | 374 | const stderr = poller.reader(.stderr); |
| 381 | if (stderr.readableLength() > 0) { | 375 | if (stderr.bufferedLen() > 0) { |
| 382 | const owned_stderr = try stderr.toOwnedSlice(); | 376 | std.debug.print("{s}", .{stderr.buffered()}); |
| 383 | defer gpa.free(owned_stderr); | | |
| 384 | std.debug.print("{s}", .{owned_stderr}); | | |
| 385 | } | 377 | } |
| 386 | | 378 | |
| 387 | // Send EOF to stdin. | 379 | // Send EOF to stdin. |