diff options
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/ops/web_worker.rs | 10 | ||||
-rw-r--r-- | runtime/ops/worker_host.rs | 27 |
2 files changed, 21 insertions, 16 deletions
diff --git a/runtime/ops/web_worker.rs b/runtime/ops/web_worker.rs index e62642fdd..bdf03d98f 100644 --- a/runtime/ops/web_worker.rs +++ b/runtime/ops/web_worker.rs @@ -6,6 +6,7 @@ use crate::web_worker::WebWorkerInternalHandle; use crate::web_worker::WebWorkerType; use deno_core::error::AnyError; use deno_core::op; +use deno_core::op2; use deno_core::CancelFuture; use deno_core::OpState; @@ -27,10 +28,10 @@ deno_core::extension!( ], ); -#[op] +#[op2] fn op_worker_post_message( state: &mut OpState, - data: JsMessageData, + #[serde] data: JsMessageData, ) -> Result<(), AnyError> { let handle = state.borrow::<WebWorkerInternalHandle>().clone(); handle.port.send(state, data)?; @@ -52,7 +53,7 @@ async fn op_worker_recv_message( .await? } -#[op] +#[op2(fast)] fn op_worker_close(state: &mut OpState) { // Notify parent that we're finished let mut handle = state.borrow_mut::<WebWorkerInternalHandle>().clone(); @@ -60,7 +61,8 @@ fn op_worker_close(state: &mut OpState) { handle.terminate(); } -#[op] +#[op2] +#[serde] fn op_worker_get_type(state: &mut OpState) -> WebWorkerType { let handle = state.borrow::<WebWorkerInternalHandle>().clone(); handle.worker_type diff --git a/runtime/ops/worker_host.rs b/runtime/ops/worker_host.rs index 9bfbd9d10..002cc742a 100644 --- a/runtime/ops/worker_host.rs +++ b/runtime/ops/worker_host.rs @@ -13,7 +13,7 @@ use crate::web_worker::WorkerControlEvent; use crate::web_worker::WorkerId; use crate::worker::FormatJsErrorFn; use deno_core::error::AnyError; -use deno_core::op; +use deno_core::op2; use deno_core::serde::Deserialize; use deno_core::CancelFuture; use deno_core::CancelHandle; @@ -114,10 +114,11 @@ pub struct CreateWorkerArgs { } /// Create worker as the host -#[op] +#[op2] +#[serde] fn op_create_worker( state: &mut OpState, - args: CreateWorkerArgs, + #[serde] args: CreateWorkerArgs, ) -> Result<WorkerId, AnyError> { let specifier = args.specifier.clone(); let maybe_source_code = if args.has_source_code { @@ -221,8 +222,8 @@ fn op_create_worker( Ok(worker_id) } -#[op] -fn op_host_terminate_worker(state: &mut OpState, id: WorkerId) { +#[op2] +fn op_host_terminate_worker(state: &mut OpState, #[serde] id: WorkerId) { if let Some(worker_thread) = state.borrow_mut::<WorkersTable>().remove(&id) { worker_thread.terminate(); } else { @@ -271,10 +272,11 @@ fn close_channel( } /// Get control event from guest worker as host -#[op] +#[op2(async)] +#[serde] async fn op_host_recv_ctrl( state: Rc<RefCell<OpState>>, - id: WorkerId, + #[serde] id: WorkerId, ) -> Result<WorkerControlEvent, AnyError> { let (worker_handle, cancel_handle) = { let state = state.borrow(); @@ -313,10 +315,11 @@ async fn op_host_recv_ctrl( } } -#[op] +#[op2(async)] +#[serde] async fn op_host_recv_message( state: Rc<RefCell<OpState>>, - id: WorkerId, + #[serde] id: WorkerId, ) -> Result<Option<JsMessageData>, AnyError> { let (worker_handle, cancel_handle) = { let s = state.borrow(); @@ -351,11 +354,11 @@ async fn op_host_recv_message( } /// Post message to guest worker as host -#[op] +#[op2] fn op_host_post_message( state: &mut OpState, - id: WorkerId, - data: JsMessageData, + #[serde] id: WorkerId, + #[serde] data: JsMessageData, ) -> Result<(), AnyError> { if let Some(worker_thread) = state.borrow::<WorkersTable>().get(&id) { debug!("post message to worker {}", id); |