diff options
author | Luca Casonato <hello@lcas.dev> | 2021-06-21 19:53:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-21 19:53:52 +0200 |
commit | f9ff981daf6931a01e1516db0b5714e7a94f145b (patch) | |
tree | 677a6e3f12c86210cc635e68b9afc06c4cb1d2f9 /extensions/web/lib.rs | |
parent | a2f939b99c43c6344f109144d7b01c95294a6f8b (diff) |
feat: `MessageChannel` and `MessagePort` (#11051)
This commit introduces support for MessageChannel and MessagePort.
MessagePorts can be transfered across other MessagePorts.
Diffstat (limited to 'extensions/web/lib.rs')
-rw-r--r-- | extensions/web/lib.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/extensions/web/lib.rs b/extensions/web/lib.rs index 9f7836620..d74bb619d 100644 --- a/extensions/web/lib.rs +++ b/extensions/web/lib.rs @@ -1,11 +1,16 @@ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +mod message_port; + +pub use crate::message_port::JsMessageData; + use deno_core::error::bad_resource_id; use deno_core::error::null_opbuf; use deno_core::error::range_error; use deno_core::error::type_error; use deno_core::error::AnyError; use deno_core::include_js_files; +use deno_core::op_async; use deno_core::op_sync; use deno_core::url::Url; use deno_core::Extension; @@ -30,6 +35,10 @@ use std::sync::Mutex; use std::usize; use uuid::Uuid; +use crate::message_port::op_message_port_create_entangled; +use crate::message_port::op_message_port_post_message; +use crate::message_port::op_message_port_recv_message; + /// Load and execute the javascript code. pub fn init( blob_url_store: BlobUrlStore, @@ -52,6 +61,7 @@ pub fn init( "10_filereader.js", "11_blob_url.js", "12_location.js", + "13_message_port.js", )) .ops(vec![ ("op_base64_decode", op_sync(op_base64_decode)), @@ -71,6 +81,18 @@ pub fn init( "op_file_revoke_object_url", op_sync(op_file_revoke_object_url), ), + ( + "op_message_port_create_entangled", + op_sync(op_message_port_create_entangled), + ), + ( + "op_message_port_post_message", + op_sync(op_message_port_post_message), + ), + ( + "op_message_port_recv_message", + op_async(op_message_port_recv_message), + ), ]) .state(move |state| { state.put(blob_url_store.clone()); |