summaryrefslogtreecommitdiff
path: root/runtime/ops/worker_host.rs
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/ops/worker_host.rs')
-rw-r--r--runtime/ops/worker_host.rs38
1 files changed, 12 insertions, 26 deletions
diff --git a/runtime/ops/worker_host.rs b/runtime/ops/worker_host.rs
index 6891241dd..d8e60171e 100644
--- a/runtime/ops/worker_host.rs
+++ b/runtime/ops/worker_host.rs
@@ -57,11 +57,6 @@ pub type CreateWebWorkerCb =
#[derive(Clone)]
pub struct CreateWebWorkerCbHolder(Arc<CreateWebWorkerCb>);
-#[derive(Deserialize)]
-struct HostUnhandledErrorArgs {
- message: String,
-}
-
pub struct WorkerThread {
join_handle: JoinHandle<Result<(), AnyError>>,
worker_handle: WebWorkerHandle,
@@ -95,12 +90,12 @@ pub fn init(
super::reg_json_sync(
rt,
"op_host_unhandled_error",
- move |_state, args: HostUnhandledErrorArgs, _zero_copy| {
+ move |_state, message: String, _zero_copy| {
if let Some(mut sender) = sender.clone() {
sender
- .try_send(WorkerEvent::Error(generic_error(args.message)))
+ .try_send(WorkerEvent::Error(generic_error(message)))
.expect("Failed to propagate error event to parent worker");
- Ok(json!(true))
+ Ok(true)
} else {
Err(generic_error("Cannot be called from main worker."))
}
@@ -370,7 +365,7 @@ fn op_create_worker(
state: &mut OpState,
args: CreateWorkerArgs,
_data: Option<ZeroCopyBuf>,
-) -> Result<Value, AnyError> {
+) -> Result<WorkerId, AnyError> {
let specifier = args.specifier.clone();
let maybe_source_code = if args.has_source_code {
Some(args.source_code.clone())
@@ -445,21 +440,15 @@ fn op_create_worker(
.borrow_mut::<WorkersTable>()
.insert(worker_id, worker_thread);
- Ok(json!({ "id": worker_id }))
-}
-
-#[derive(Deserialize)]
-pub struct WorkerArgs {
- id: i32,
+ Ok(worker_id)
}
#[allow(clippy::unnecessary_wraps)]
fn op_host_terminate_worker(
state: &mut OpState,
- args: WorkerArgs,
+ id: WorkerId,
_data: Option<ZeroCopyBuf>,
-) -> Result<Value, AnyError> {
- let id = args.id as u32;
+) -> Result<(), AnyError> {
let worker_thread = state
.borrow_mut::<WorkersTable>()
.remove(&id)
@@ -470,7 +459,7 @@ fn op_host_terminate_worker(
.join()
.expect("Panic in worker thread")
.expect("Panic in worker event loop");
- Ok(json!({}))
+ Ok(())
}
fn serialize_worker_event(event: WorkerEvent) -> Value {
@@ -532,11 +521,9 @@ fn try_remove_and_close(state: Rc<RefCell<OpState>>, id: u32) {
/// Get message from guest worker as host
async fn op_host_get_message(
state: Rc<RefCell<OpState>>,
- args: WorkerArgs,
+ id: WorkerId,
_zero_copy: Option<ZeroCopyBuf>,
) -> Result<Value, AnyError> {
- let id = args.id as u32;
-
let worker_handle = {
let s = state.borrow();
let workers_table = s.borrow::<WorkersTable>();
@@ -566,11 +553,10 @@ async fn op_host_get_message(
/// Post message to guest worker as host
fn op_host_post_message(
state: &mut OpState,
- args: WorkerArgs,
+ id: WorkerId,
data: Option<ZeroCopyBuf>,
-) -> Result<Value, AnyError> {
+) -> Result<(), AnyError> {
let data = data.ok_or_else(null_opbuf)?;
- let id = args.id as u32;
let msg = Vec::from(&*data).into_boxed_slice();
debug!("post message to worker {}", id);
@@ -579,5 +565,5 @@ fn op_host_post_message(
.get(&id)
.expect("No worker handle found");
worker_thread.worker_handle.post_message(msg)?;
- Ok(json!({}))
+ Ok(())
}