diff options
author | 2022-04-11 04:58:29 -0700 | |
---|---|---|
committer | 2022-04-11 04:58:29 -0700 | |
commit | 3e969244ac2a1b60ba7cea2aeff286b0d5dc3dc6 (patch) | |
tree | 923d54a2bf187b1827865ad26c59fadd6b5f019d /src/javascript/jsc/api/bun.zig | |
parent | ac3835227eb66ea340122db614e6f32fa17a5697 (diff) | |
download | bun-3e969244ac2a1b60ba7cea2aeff286b0d5dc3dc6.tar.gz bun-3e969244ac2a1b60ba7cea2aeff286b0d5dc3dc6.tar.zst bun-3e969244ac2a1b60ba7cea2aeff286b0d5dc3dc6.zip |
[bun.js] Add a `Server.stop` function
Diffstat (limited to 'src/javascript/jsc/api/bun.zig')
-rw-r--r-- | src/javascript/jsc/api/bun.zig | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/src/javascript/jsc/api/bun.zig b/src/javascript/jsc/api/bun.zig index 8826acc2e..f0d483e1f 100644 --- a/src/javascript/jsc/api/bun.zig +++ b/src/javascript/jsc/api/bun.zig @@ -1191,25 +1191,67 @@ pub fn serve( return null; } + // Listen happens on the next tick! + // This is so we can return a Server object if (config.ssl_config != null) { if (config.development) { var server = JSC.API.DebugSSLServer.init(config, ctx.ptr()); server.listen(); + if (!server.thisObject.isEmpty()) { + exception.* = server.thisObject.asObjectRef(); + server.thisObject = JSC.JSValue.zero; + server.deinit(); + return null; + } + var obj = JSC.API.DebugSSLServer.Class.make(ctx, server); + JSC.C.JSValueProtect(ctx, obj); + server.thisObject = JSValue.c(obj); + return obj; } else { var server = JSC.API.SSLServer.init(config, ctx.ptr()); server.listen(); + if (!server.thisObject.isEmpty()) { + exception.* = server.thisObject.asObjectRef(); + server.thisObject = JSC.JSValue.zero; + server.deinit(); + return null; + } + var obj = JSC.API.SSLServer.Class.make(ctx, server); + JSC.C.JSValueProtect(ctx, obj); + server.thisObject = JSValue.c(obj); + return obj; } } else { if (config.development) { var server = JSC.API.DebugServer.init(config, ctx.ptr()); server.listen(); + if (!server.thisObject.isEmpty()) { + exception.* = server.thisObject.asObjectRef(); + server.thisObject = JSC.JSValue.zero; + server.deinit(); + return null; + } + var obj = JSC.API.DebugServer.Class.make(ctx, server); + JSC.C.JSValueProtect(ctx, obj); + server.thisObject = JSValue.c(obj); + return obj; } else { var server = JSC.API.Server.init(config, ctx.ptr()); server.listen(); + if (!server.thisObject.isEmpty()) { + exception.* = server.thisObject.asObjectRef(); + server.thisObject = JSC.JSValue.zero; + server.deinit(); + return null; + } + var obj = JSC.API.Server.Class.make(ctx, server); + JSC.C.JSValueProtect(ctx, obj); + server.thisObject = JSValue.c(obj); + return obj; } } - return JSC.JSValue.jsUndefined().asObjectRef(); + unreachable; } pub fn allocUnsafe( |