diff options
author | Valentin Anger <syrupthinker@gryphno.de> | 2020-06-01 20:20:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-01 14:20:47 -0400 |
commit | becbb56b19e96e4dd72b861217a855fba953d290 (patch) | |
tree | d9e99771c537ef87a4a945f0120775c337ef90aa /cli/ops/web_worker.rs | |
parent | 12d741c2fe453625d510313beaa2e1c282784c00 (diff) |
feat(core): Ops can take several zero copy buffers (#4788)
Diffstat (limited to 'cli/ops/web_worker.rs')
-rw-r--r-- | cli/ops/web_worker.rs | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/cli/ops/web_worker.rs b/cli/ops/web_worker.rs index d2d202e91..553278b07 100644 --- a/cli/ops/web_worker.rs +++ b/cli/ops/web_worker.rs @@ -17,18 +17,18 @@ pub fn web_worker_op<D>( ) -> impl Fn( &mut CoreIsolateState, Value, - Option<ZeroCopyBuf>, + &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> where D: Fn( &mpsc::Sender<WorkerEvent>, Value, - Option<ZeroCopyBuf>, + &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError>, { move |_isolate_state: &mut CoreIsolateState, args: Value, - zero_copy: Option<ZeroCopyBuf>| + zero_copy: &mut [ZeroCopyBuf]| -> Result<JsonOp, OpError> { dispatcher(&sender, args, zero_copy) } } @@ -39,19 +39,19 @@ pub fn web_worker_op2<D>( ) -> impl Fn( &mut CoreIsolateState, Value, - Option<ZeroCopyBuf>, + &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> where D: Fn( WebWorkerHandle, &mpsc::Sender<WorkerEvent>, Value, - Option<ZeroCopyBuf>, + &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError>, { move |_isolate_state: &mut CoreIsolateState, args: Value, - zero_copy: Option<ZeroCopyBuf>| + zero_copy: &mut [ZeroCopyBuf]| -> Result<JsonOp, OpError> { dispatcher(handle.clone(), &sender, args, zero_copy) } @@ -84,9 +84,10 @@ pub fn init( fn op_worker_post_message( sender: &mpsc::Sender<WorkerEvent>, _args: Value, - data: Option<ZeroCopyBuf>, + data: &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> { - let d = Vec::from(data.unwrap().as_ref()).into_boxed_slice(); + assert_eq!(data.len(), 1, "Invalid number of arguments"); + let d = Vec::from(&*data[0]).into_boxed_slice(); let mut sender = sender.clone(); sender .try_send(WorkerEvent::Message(d)) @@ -99,7 +100,7 @@ fn op_worker_close( handle: WebWorkerHandle, sender: &mpsc::Sender<WorkerEvent>, _args: Value, - _data: Option<ZeroCopyBuf>, + _data: &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> { let mut sender = sender.clone(); // Notify parent that we're finished |