summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Casonato <lucacasonato@yahoo.com>2020-04-28 07:36:47 +0200
committerGitHub <noreply@github.com>2020-04-28 01:36:47 -0400
commit30dc9bb748f7885a8fd7fe1210e18bf45ee063b8 (patch)
tree9e24a53c4d6695ab70378a0dc06f63c5d63769d1
parentde751e5221cd2eafbdd9cddfb58b0619d74c0504 (diff)
Make shutdown unstable and async (#4940)
-rw-r--r--cli/js/lib.deno.ns.d.ts2
-rw-r--r--cli/js/ops/net.ts3
-rw-r--r--cli/ops/net.rs4
3 files changed, 6 insertions, 3 deletions
diff --git a/cli/js/lib.deno.ns.d.ts b/cli/js/lib.deno.ns.d.ts
index 6d354d034..3c568f798 100644
--- a/cli/js/lib.deno.ns.d.ts
+++ b/cli/js/lib.deno.ns.d.ts
@@ -1872,7 +1872,7 @@ declare namespace Deno {
* const conn = await listener.accept();
* Deno.shutdown(conn.rid, Deno.ShutdownMode.Write);
*/
- export function shutdown(rid: number, how: ShutdownMode): void;
+ export function shutdown(rid: number, how: ShutdownMode): Promise<void>;
/** **UNSTABLE**: new API, yet to be vetted.
*
diff --git a/cli/js/ops/net.ts b/cli/js/ops/net.ts
index 369f2ca3c..d04c7ba8f 100644
--- a/cli/js/ops/net.ts
+++ b/cli/js/ops/net.ts
@@ -22,8 +22,9 @@ export enum ShutdownMode {
ReadWrite, // unused
}
-export function shutdown(rid: number, how: ShutdownMode): void {
+export function shutdown(rid: number, how: ShutdownMode): Promise<void> {
sendSync("op_shutdown", { rid, how });
+ return Promise.resolve();
}
interface AcceptResponse {
diff --git a/cli/ops/net.rs b/cli/ops/net.rs
index 415d2cecc..b46eedc68 100644
--- a/cli/ops/net.rs
+++ b/cli/ops/net.rs
@@ -342,10 +342,12 @@ struct ShutdownArgs {
fn op_shutdown(
isolate: &mut CoreIsolate,
- _state: &State,
+ state: &State,
args: Value,
_zero_copy: Option<ZeroCopyBuf>,
) -> Result<JsonOp, OpError> {
+ state.check_unstable("Deno.shutdown");
+
let args: ShutdownArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;