diff options
Diffstat (limited to 'cli/ops/net.rs')
-rw-r--r-- | cli/ops/net.rs | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/cli/ops/net.rs b/cli/ops/net.rs index 3d524d3f1..5ccb62d6c 100644 --- a/cli/ops/net.rs +++ b/cli/ops/net.rs @@ -40,7 +40,7 @@ struct AcceptArgs { fn accept_tcp( isolate_state: &mut CoreIsolateState, args: AcceptArgs, - _zero_copy: Option<ZeroCopyBuf>, + _zero_copy: &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> { let rid = args.rid as u32; let resource_table = isolate_state.resource_table.clone(); @@ -101,7 +101,7 @@ fn op_accept( isolate_state: &mut CoreIsolateState, _state: &State, args: Value, - zero_copy: Option<ZeroCopyBuf>, + zero_copy: &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> { let args: AcceptArgs = serde_json::from_value(args)?; match args.transport.as_str() { @@ -125,9 +125,10 @@ fn receive_udp( isolate_state: &mut CoreIsolateState, _state: &State, args: ReceiveArgs, - 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 rid = args.rid as u32; @@ -142,7 +143,9 @@ fn receive_udp( OpError::bad_resource("Socket has been closed".to_string()) })?; let socket = &mut resource.socket; - socket.poll_recv_from(cx, &mut buf).map_err(OpError::from) + socket + .poll_recv_from(cx, &mut zero_copy) + .map_err(OpError::from) }); let (size, remote_addr) = receive_fut.await?; Ok(json!({ @@ -162,9 +165,10 @@ fn op_receive( isolate_state: &mut CoreIsolateState, state: &State, args: Value, - zero_copy: Option<ZeroCopyBuf>, + zero_copy: &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> { - assert!(zero_copy.is_some()); + assert_eq!(zero_copy.len(), 1, "Invalid number of arguments"); + let args: ReceiveArgs = serde_json::from_value(args)?; match args.transport.as_str() { "udp" => receive_udp(isolate_state, state, args, zero_copy), @@ -191,10 +195,11 @@ fn op_send( isolate_state: &mut CoreIsolateState, state: &State, args: Value, - zero_copy: Option<ZeroCopyBuf>, + zero_copy: &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> { - assert!(zero_copy.is_some()); - let buf = zero_copy.unwrap(); + assert_eq!(zero_copy.len(), 1, "Invalid number of arguments"); + let zero_copy = zero_copy[0].clone(); + let resource_table = isolate_state.resource_table.clone(); match serde_json::from_value(args)? { SendArgs { @@ -213,7 +218,7 @@ fn op_send( })?; let socket = &mut resource.socket; let addr = resolve_addr(&args.hostname, args.port)?; - socket.send_to(&buf, addr).await?; + socket.send_to(&zero_copy, addr).await?; Ok(json!({})) }; @@ -237,7 +242,7 @@ fn op_send( let socket = &mut resource.socket; socket - .send_to(&buf, &resource.local_addr.as_pathname().unwrap()) + .send_to(&zero_copy, &resource.local_addr.as_pathname().unwrap()) .await?; Ok(json!({})) @@ -260,7 +265,7 @@ fn op_connect( isolate_state: &mut CoreIsolateState, state: &State, args: Value, - _zero_copy: Option<ZeroCopyBuf>, + _zero_copy: &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> { let resource_table = isolate_state.resource_table.clone(); match serde_json::from_value(args)? { @@ -346,7 +351,7 @@ fn op_shutdown( isolate_state: &mut CoreIsolateState, state: &State, args: Value, - _zero_copy: Option<ZeroCopyBuf>, + _zero_copy: &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> { state.check_unstable("Deno.shutdown"); @@ -488,7 +493,7 @@ fn op_listen( isolate_state: &mut CoreIsolateState, state: &State, args: Value, - _zero_copy: Option<ZeroCopyBuf>, + _zero_copy: &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError> { let mut resource_table = isolate_state.resource_table.borrow_mut(); match serde_json::from_value(args)? { |