summaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'runtime')
-rw-r--r--runtime/ops/web_worker.rs10
-rw-r--r--runtime/ops/worker_host.rs27
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);