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/net_unix.rs | |
parent | 12d741c2fe453625d510313beaa2e1c282784c00 (diff) |
feat(core): Ops can take several zero copy buffers (#4788)
Diffstat (limited to 'cli/ops/net_unix.rs')
-rw-r--r-- | cli/ops/net_unix.rs | 9 |
1 files changed, 5 insertions, 4 deletions
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<ZeroCopyBuf>, + _zero_copy: &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> { 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<ZeroCopyBuf>, + zero_copy: &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> { - 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": { |