From becbb56b19e96e4dd72b861217a855fba953d290 Mon Sep 17 00:00:00 2001 From: Valentin Anger Date: Mon, 1 Jun 2020 20:20:47 +0200 Subject: feat(core): Ops can take several zero copy buffers (#4788) --- cli/ops/net_unix.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'cli/ops/net_unix.rs') diff --git a/cli/ops/net_unix.rs b/cli/ops/net_unix.rs index a207eaba8..0b2ceb75a 100644 --- a/cli/ops/net_unix.rs +++ b/cli/ops/net_unix.rs @@ -29,7 +29,7 @@ pub struct UnixListenArgs { pub fn accept_unix( isolate_state: &mut CoreIsolateState, rid: u32, - _zero_copy: Option, + _zero_copy: &mut [ZeroCopyBuf], ) -> Result { let resource_table = isolate_state.resource_table.clone(); { @@ -80,9 +80,10 @@ pub fn accept_unix( pub fn receive_unix_packet( isolate_state: &mut CoreIsolateState, rid: u32, - zero_copy: Option, + zero_copy: &mut [ZeroCopyBuf], ) -> Result { - let mut buf = zero_copy.unwrap(); + assert_eq!(zero_copy.len(), 1, "Invalid number of arguments"); + let mut zero_copy = zero_copy[0].clone(); let resource_table = isolate_state.resource_table.clone(); let op = async move { @@ -92,7 +93,7 @@ pub fn receive_unix_packet( .ok_or_else(|| { OpError::bad_resource("Socket has been closed".to_string()) })?; - let (size, remote_addr) = resource.socket.recv_from(&mut buf).await?; + let (size, remote_addr) = resource.socket.recv_from(&mut zero_copy).await?; Ok(json!({ "size": size, "remoteAddr": { -- cgit v1.2.3