diff options
author | 2023-10-16 20:01:24 -0700 | |
---|---|---|
committer | 2023-10-16 20:01:24 -0700 | |
commit | a3958190e8f106adca7fbf4ba2605056cb22aced (patch) | |
tree | 475057061d3470f1dc4d06b901d6bad0b898cb09 /src/bun.js/javascript.zig | |
parent | 6504bfef74b552aa834324adfe102c9ba0193039 (diff) | |
download | bun-a3958190e8f106adca7fbf4ba2605056cb22aced.tar.gz bun-a3958190e8f106adca7fbf4ba2605056cb22aced.tar.zst bun-a3958190e8f106adca7fbf4ba2605056cb22aced.zip |
fix(runtime): improve IPC reliability + organization pass on that code (#6475)
* dfghj
* Handle messages that did not finish
* tidy
* ok
* a
* Merge remote-tracking branch 'origin/main' into dave/ipc-fixes
* test failures
---------
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Diffstat (limited to 'src/bun.js/javascript.zig')
-rw-r--r-- | src/bun.js/javascript.zig | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/bun.js/javascript.zig b/src/bun.js/javascript.zig index d1b87e34e..e93e65399 100644 --- a/src/bun.js/javascript.zig +++ b/src/bun.js/javascript.zig @@ -294,13 +294,8 @@ pub export fn Bun__Process__send( return .zero; } var vm = globalObject.bunVM(); - if (vm.ipc) |ipc| { - const fd = ipc.socket.fd(); - const success = IPC.serializeJSValueForSubprocess( - globalObject, - callFrame.argument(0), - fd, - ); + if (vm.ipc) |ipc_instance| { + const success = ipc_instance.ipc.serializeAndSend(globalObject, callFrame.argument(0)); return if (success) .undefined else .zero; } else { globalObject.throw("IPC Socket is no longer open.", .{}); @@ -373,6 +368,14 @@ pub export fn Bun__onDidAppendPlugin(jsc_vm: *VirtualMachine, globalObject: *JSG jsc_vm.bundler.linker.plugin_runner = &jsc_vm.plugin_runner.?; } +// pub fn getGlobalExitCodeForPipeFailure() u8 { +// if (VirtualMachine.is_main_thread_vm) { +// return VirtualMachine.get().exit_handler.exit_code; +// } + +// return 0; +// } + pub const ExitHandler = struct { exit_code: u8 = 0, @@ -2803,9 +2806,8 @@ pub const VirtualMachine = struct { pub const IPCInstance = struct { globalThis: ?*JSGlobalObject, - socket: IPC.Socket, uws_context: *uws.SocketContext, - ipc_buffer: bun.ByteList, + ipc: IPC.IPCData, pub fn handleIPCMessage( this: *IPCInstance, @@ -2855,13 +2857,13 @@ pub const VirtualMachine = struct { var instance = bun.default_allocator.create(IPCInstance) catch @panic("OOM"); instance.* = .{ .globalThis = this.global, - .socket = socket, .uws_context = context, - .ipc_buffer = bun.ByteList{}, + .ipc = .{ .socket = socket }, }; var ptr = socket.ext(*IPCInstance); ptr.?.* = instance; this.ipc = instance; + instance.ipc.writeVersionPacket(); } comptime { if (!JSC.is_bindgen) |