@@ -2,13 +2,11 @@ use std::convert::TryInto;
22use  std:: future:: Future ; 
33use  std:: io:: IoSlice ; 
44use  std:: net:: { Ipv4Addr ,  Ipv6Addr ,  SocketAddr ,  SocketAddrV4 ,  SocketAddrV6 } ; 
5- use  std:: sync:: Arc ; 
65use  std:: time:: Duration ; 
76
87use  anyhow:: Result ; 
9- use  tokio:: io:: { AsyncReadExt ,  AsyncWriteExt } ; 
10- use  tokio:: net:: { TcpListener ,  TcpStream } ; 
11- use  tokio:: sync:: Mutex ; 
8+ use  async_std:: io:: { ReadExt ,  WriteExt } ; 
9+ use  async_std:: net:: { TcpListener ,  TcpStream } ; 
1210use  wasmtime:: { Caller ,  FuncType ,  Linker ,  ValType } ; 
1311use  wasmtime:: { Memory ,  Trap } ; 
1412
@@ -211,7 +209,7 @@ fn resolve(
211209        let  name = std:: str:: from_utf8 ( buffer. as_slice ( ) ) . or_trap ( "lunatic::network::resolve" ) ?; 
212210        // Check for timeout during lookup 
213211        let  return_ = if  let  Some ( result)  = tokio:: select! { 
214-             _ = tokio :: time :: sleep( Duration :: from_millis( timeout as  u64 ) ) ,  if  timeout != 0  => None , 
212+             _ = async_std :: task :: sleep( Duration :: from_millis( timeout as  u64 ) ) ,  if  timeout != 0  => None , 
215213            result = tokio:: net:: lookup_host( name)  => Some ( result) 
216214        }  { 
217215            let  ( iter_or_error_id,  result)  = match  result { 
@@ -463,11 +461,7 @@ fn tcp_accept(
463461
464462        let  ( tcp_stream_or_error_id,  peer_addr_iter,  result)  = match  tcp_listener. accept ( ) . await  { 
465463            Ok ( ( stream,  socket_addr) )  => { 
466-                 let  stream_id = caller
467-                     . data_mut ( ) 
468-                     . resources 
469-                     . tcp_streams 
470-                     . add ( Arc :: new ( Mutex :: new ( stream) ) ) ; 
464+                 let  stream_id = caller. data_mut ( ) . resources . tcp_streams . add ( stream) ; 
471465                let  dns_iter_id = caller
472466                    . data_mut ( ) 
473467                    . resources 
@@ -539,18 +533,11 @@ fn tcp_connect(
539533        ) ?; 
540534
541535        if  let  Some ( result)  = tokio:: select! { 
542-             _ = tokio :: time :: sleep( Duration :: from_millis( timeout as  u64 ) ) ,  if  timeout != 0  => None , 
536+             _ = async_std :: task :: sleep( Duration :: from_millis( timeout as  u64 ) ) ,  if  timeout != 0  => None , 
543537            result = TcpStream :: connect( socket_addr)  => Some ( result) 
544538        }  { 
545539            let  ( stream_or_error_id,  result)  = match  result { 
546-                 Ok ( stream)  => ( 
547-                     caller
548-                         . data_mut ( ) 
549-                         . resources 
550-                         . tcp_streams 
551-                         . add ( Arc :: new ( Mutex :: new ( stream) ) ) , 
552-                     0 , 
553-                 ) , 
540+                 Ok ( stream)  => ( caller. data_mut ( ) . resources . tcp_streams . add ( stream) ,  0 ) , 
554541                Err ( error)  => ( caller. data_mut ( ) . errors . add ( error. into ( ) ) ,  1 ) , 
555542            } ; 
556543
@@ -660,17 +647,17 @@ fn tcp_write_vectored(
660647            . collect ( ) ; 
661648        let  vec_slices = vec_slices?; 
662649
663-         let  stream_mutex  = caller
650+         let  mut  stream  = caller
664651            . data ( ) 
665652            . resources 
666653            . tcp_streams 
667654            . get ( stream_id) 
668655            . or_trap ( "lunatic::network::tcp_write_vectored" ) ?
669656            . clone ( ) ; 
670-          let   mut  stream = stream_mutex . lock ( ) . await ; 
657+ 
671658        // Check for timeout 
672659        if  let  Some ( result)  = tokio:: select! { 
673-             _ = tokio :: time :: sleep( Duration :: from_millis( timeout as  u64 ) ) ,  if  timeout != 0  => None , 
660+             _ = async_std :: task :: sleep( Duration :: from_millis( timeout as  u64 ) ) ,  if  timeout != 0  => None , 
674661            result = stream. write_vectored( vec_slices. as_slice( ) )  => Some ( result) 
675662        }  { 
676663            let  ( opaque,  return_)  = match  result { 
@@ -722,16 +709,14 @@ fn tcp_read(
722709    opaque_ptr :  u32 , 
723710)  -> Box < dyn  Future < Output  = Result < u32 ,  Trap > >  + Send  + ' _ >  { 
724711    Box :: new ( async  move  { 
725-         let  stream_mutex  = caller
712+         let  mut  stream  = caller
726713            . data ( ) 
727714            . resources 
728715            . tcp_streams 
729716            . get ( stream_id) 
730717            . or_trap ( "lunatic::network::tcp_read" ) ?
731718            . clone ( ) ; 
732719
733-         let  mut  stream = stream_mutex. lock ( ) . await ; 
734- 
735720        let  memory = get_memory ( & mut  caller) ?; 
736721        let  buffer = memory
737722            . data_mut ( & mut  caller) 
@@ -740,7 +725,7 @@ fn tcp_read(
740725
741726        // Check for timeout first 
742727        if  let  Some ( result)  = tokio:: select! { 
743-             _ = tokio :: time :: sleep( Duration :: from_millis( timeout as  u64 ) ) ,  if  timeout != 0  => None , 
728+             _ = async_std :: task :: sleep( Duration :: from_millis( timeout as  u64 ) ) ,  if  timeout != 0  => None , 
744729            result = stream. read( buffer)  => Some ( result) 
745730        }  { 
746731            let  ( opaque,  return_)  = match  result { 
@@ -783,14 +768,13 @@ fn tcp_flush(
783768    error_id_ptr :  u32 , 
784769)  -> Box < dyn  Future < Output  = Result < u32 ,  Trap > >  + Send  + ' _ >  { 
785770    Box :: new ( async  move  { 
786-         let  stream_mutex  = caller
771+         let  mut  stream  = caller
787772            . data ( ) 
788773            . resources 
789774            . tcp_streams 
790775            . get ( stream_id) 
791776            . or_trap ( "lunatic::network::tcp_flush" ) ?
792777            . clone ( ) ; 
793-         let  mut  stream = stream_mutex. lock ( ) . await ; 
794778
795779        let  ( error_id,  result)  = match  stream. flush ( ) . await  { 
796780            Ok ( ( ) )  => ( 0 ,  0 ) , 
0 commit comments