88// Imports
99//======================================================================================================================
1010use :: anyhow:: Result ;
11- use :: demikernel:: { demi_sgarray_t, runtime:: types:: demi_opcode_t, LibOS , LibOSName , QDesc , QToken } ;
11+ use :: demikernel:: { demi_sgarray_t, runtime:: types:: demi_opcode_t, LibOS , LibOSName , QDesc } ;
1212use :: std:: { env, net:: SocketAddr , slice, str:: FromStr , time:: Duration , u8} ;
1313use log:: { error, warn} ;
1414
@@ -33,15 +33,15 @@ const NUM_PING_PONG_ROUNDS: usize = 1024;
3333const TIMEOUT_SECONDS : Duration = Duration :: from_secs ( 256 ) ;
3434
3535fn mksga ( libos : & mut LibOS , size : usize , value : u8 ) -> Result < demi_sgarray_t > {
36- let sga: demi_sgarray_t = match libos. sgaalloc ( size) {
36+ let sga = match libos. sgaalloc ( size) {
3737 Ok ( sga) => sga,
3838 Err ( e) => anyhow:: bail!( "failed to allocate scatter-gather array: {:?}" , e) ,
3939 } ;
4040
4141 // Ensure that allocated the array has the requested size.
4242 if sga. segments [ 0 ] . data_len_bytes as usize != size {
4343 freesga ( libos, sga) ;
44- let seglen: usize = sga. segments [ 0 ] . data_len_bytes as usize ;
44+ let seglen = sga. segments [ 0 ] . data_len_bytes as usize ;
4545 anyhow:: bail!(
4646 "failed to allocate scatter-gather array: expected size={:?} allocated size={:?}" ,
4747 size,
@@ -50,10 +50,10 @@ fn mksga(libos: &mut LibOS, size: usize, value: u8) -> Result<demi_sgarray_t> {
5050 }
5151
5252 // Fill in the array.
53- let ptr: * mut u8 = sga. segments [ 0 ] . data_buf_ptr as * mut u8 ;
54- let len: usize = sga. segments [ 0 ] . data_len_bytes as usize ;
55- let slice: & mut [ u8 ] = unsafe { slice:: from_raw_parts_mut ( ptr, len) } ;
56- let mut fill: u8 = value;
53+ let ptr = sga. segments [ 0 ] . data_buf_ptr as * mut u8 ;
54+ let len = sga. segments [ 0 ] . data_len_bytes as usize ;
55+ let slice = unsafe { slice:: from_raw_parts_mut ( ptr, len) } ;
56+ let mut fill = value;
5757 for x in slice {
5858 * x = fill;
5959 fill = ( fill % ( u8:: MAX - 1 ) + 1 ) as u8 ;
@@ -70,7 +70,7 @@ fn freesga(libos: &mut LibOS, sga: demi_sgarray_t) {
7070}
7171
7272fn accept_and_wait ( libos : & mut LibOS , sockqd : QDesc ) -> Result < QDesc > {
73- let qt: QToken = match libos. accept ( sockqd) {
73+ let qt = match libos. accept ( sockqd) {
7474 Ok ( qt) => qt,
7575 Err ( e) => anyhow:: bail!( "accept failed: {:?}" , e) ,
7676 } ;
@@ -81,8 +81,8 @@ fn accept_and_wait(libos: &mut LibOS, sockqd: QDesc) -> Result<QDesc> {
8181 }
8282}
8383
84- fn connect_and_wait ( libos : & mut LibOS , sockqd : QDesc , remote_socket_addr : SocketAddr ) -> Result < ( ) > {
85- let qt: QToken = match libos. connect ( sockqd, remote_socket_addr ) {
84+ fn connect_and_wait ( libos : & mut LibOS , sockqd : QDesc , remote_addr : SocketAddr ) -> Result < ( ) > {
85+ let qt = match libos. connect ( sockqd, remote_addr ) {
8686 Ok ( qt) => qt,
8787 Err ( e) => anyhow:: bail!( "connect failed: {:?}" , e) ,
8888 } ;
@@ -96,7 +96,7 @@ fn connect_and_wait(libos: &mut LibOS, sockqd: QDesc, remote_socket_addr: Socket
9696}
9797
9898fn push_and_wait ( libos : & mut LibOS , sockqd : QDesc , sga : & demi_sgarray_t ) -> Result < ( ) > {
99- let qt: QToken = match libos. push ( sockqd, sga) {
99+ let qt = match libos. push ( sockqd, sga) {
100100 Ok ( qt) => qt,
101101 Err ( e) => anyhow:: bail!( "push failed: {:?}" , e) ,
102102 } ;
@@ -110,23 +110,23 @@ fn push_and_wait(libos: &mut LibOS, sockqd: QDesc, sga: &demi_sgarray_t) -> Resu
110110}
111111
112112fn pop_and_wait ( libos : & mut LibOS , sockqd : QDesc , recvbuf : & mut [ u8 ] ) -> Result < ( ) > {
113- let mut index: usize = 0 ;
113+ let mut index = 0 ;
114114
115115 while index < recvbuf. len ( ) {
116- let qt: QToken = match libos. pop ( sockqd, None ) {
116+ let qt = match libos. pop ( sockqd, None ) {
117117 Ok ( qt) => qt,
118118 Err ( e) => anyhow:: bail!( "pop failed: {:?}" , e) ,
119119 } ;
120- let sga: demi_sgarray_t = match libos. wait ( qt, Some ( TIMEOUT_SECONDS ) ) {
120+ let sga = match libos. wait ( qt, Some ( TIMEOUT_SECONDS ) ) {
121121 Ok ( qr) if qr. qr_opcode == demi_opcode_t:: DEMI_OPC_POP => unsafe { qr. qr_value . sga } ,
122122 Ok ( _) => anyhow:: bail!( "unexpected result" ) ,
123123 Err ( e) => anyhow:: bail!( "operation failed: {:?}" , e) ,
124124 } ;
125125
126126 // Copy data.
127- let ptr: * mut u8 = sga. segments [ 0 ] . data_buf_ptr as * mut u8 ;
128- let len: usize = sga. segments [ 0 ] . data_len_bytes as usize ;
129- let slice: & mut [ u8 ] = unsafe { slice:: from_raw_parts_mut ( ptr, len) } ;
127+ let ptr = sga. segments [ 0 ] . data_buf_ptr as * mut u8 ;
128+ let len = sga. segments [ 0 ] . data_len_bytes as usize ;
129+ let slice = unsafe { slice:: from_raw_parts_mut ( ptr, len) } ;
130130 for x in slice {
131131 recvbuf[ index] = * x;
132132 index += 1 ;
@@ -156,7 +156,7 @@ pub struct TcpServer {
156156
157157impl TcpServer {
158158 pub fn new ( mut libos : LibOS ) -> Result < Self > {
159- let sockqd: QDesc = match libos. socket ( AF_INET , SOCK_STREAM , 0 ) {
159+ let sockqd = match libos. socket ( AF_INET , SOCK_STREAM , 0 ) {
160160 Ok ( sockqd) => sockqd,
161161 Err ( e) => anyhow:: bail!( "failed to create socket: {:?}" , e) ,
162162 } ;
@@ -169,8 +169,8 @@ impl TcpServer {
169169 } ) ;
170170 }
171171
172- pub fn run ( & mut self , local_socket_addr : SocketAddr , num_rounds : usize ) -> Result < ( ) > {
173- if let Err ( e) = self . libos . bind ( self . listening_sockqd , local_socket_addr ) {
172+ pub fn run ( & mut self , local_addr : SocketAddr , num_rounds : usize ) -> Result < ( ) > {
173+ if let Err ( e) = self . libos . bind ( self . listening_sockqd , local_addr ) {
174174 anyhow:: bail!( "bind failed: {:?}" , e)
175175 } ;
176176
@@ -185,11 +185,11 @@ impl TcpServer {
185185
186186 // Perform multiple ping-pong rounds.
187187 for i in 0 ..num_rounds {
188- let mut fill_char: u8 = ( i % ( u8:: MAX as usize - 1 ) + 1 ) as u8 ;
188+ let mut fill_char = ( i % ( u8:: MAX as usize - 1 ) + 1 ) as u8 ;
189189
190190 // Pop data, and sanity check it.
191191 {
192- let mut recvbuf: [ u8 ; BUFSIZE_BYTES ] = [ 0 ; BUFSIZE_BYTES ] ;
192+ let mut recvbuf = [ 0 ; BUFSIZE_BYTES ] ;
193193 if let Err ( e) = pop_and_wait (
194194 & mut self . libos ,
195195 self . accepted_sockqd . expect ( "should be a valid queue descriptor" ) ,
@@ -257,7 +257,7 @@ pub struct TcpClient {
257257
258258impl TcpClient {
259259 pub fn new ( mut libos : LibOS ) -> Result < Self > {
260- let sockqd: QDesc = match libos. socket ( AF_INET , SOCK_STREAM , 0 ) {
260+ let sockqd = match libos. socket ( AF_INET , SOCK_STREAM , 0 ) {
261261 Ok ( sockqd) => sockqd,
262262 Err ( e) => anyhow:: bail!( "failed to create socket: {:?}" , e) ,
263263 } ;
@@ -269,14 +269,14 @@ impl TcpClient {
269269 } ) ;
270270 }
271271
272- fn run ( & mut self , remote_socket_addr : SocketAddr , num_rounds : usize ) -> Result < ( ) > {
273- if let Err ( e) = connect_and_wait ( & mut self . libos , self . sockqd , remote_socket_addr ) {
272+ fn run ( & mut self , remote_addr : SocketAddr , num_rounds : usize ) -> Result < ( ) > {
273+ if let Err ( e) = connect_and_wait ( & mut self . libos , self . sockqd , remote_addr ) {
274274 anyhow:: bail!( "connect and wait failed: {:?}" , e) ;
275275 }
276276
277277 // Perform multiple ping-pong rounds.
278278 for i in 0 ..num_rounds {
279- let fill_char: u8 = ( i % ( u8:: MAX as usize - 1 ) + 1 ) as u8 ;
279+ let fill_char = ( i % ( u8:: MAX as usize - 1 ) + 1 ) as u8 ;
280280
281281 // Push data.
282282 {
@@ -293,11 +293,11 @@ impl TcpClient {
293293 }
294294 }
295295
296- let mut fill_check: u8 = ( i % ( u8:: MAX as usize - 1 ) + 1 ) as u8 ;
296+ let mut fill_check = ( i % ( u8:: MAX as usize - 1 ) + 1 ) as u8 ;
297297
298298 // Pop data, and sanity check it.
299299 {
300- let mut recvbuf: [ u8 ; BUFSIZE_BYTES ] = [ 0 ; BUFSIZE_BYTES ] ;
300+ let mut recvbuf = [ 0 ; BUFSIZE_BYTES ] ;
301301 if let Err ( e) = pop_and_wait ( & mut self . libos , self . sockqd , & mut recvbuf) {
302302 anyhow:: bail!( "pop and wait failed: {:?}" , e) ;
303303 }
@@ -339,26 +339,25 @@ pub fn main() -> Result<()> {
339339 let args: Vec < String > = env:: args ( ) . collect ( ) ;
340340
341341 if args. len ( ) >= 3 {
342- let libos_name: LibOSName = match LibOSName :: from_env ( ) {
342+ let libos_name = match LibOSName :: from_env ( ) {
343343 Ok ( libos_name) => libos_name. into ( ) ,
344344 Err ( e) => anyhow:: bail!( "{:?}" , e) ,
345345 } ;
346- let libos: LibOS = match LibOS :: new ( libos_name, None ) {
346+ let libos = match LibOS :: new ( libos_name, None ) {
347347 Ok ( libos) => libos,
348348 Err ( e) => anyhow:: bail!( "failed to initialize libos: {:?}" , e) ,
349349 } ;
350- let sockaddr: SocketAddr = SocketAddr :: from_str ( & args[ 2 ] ) ?;
350+ let sockaddr = SocketAddr :: from_str ( & args[ 2 ] ) ?;
351351
352352 if args[ 1 ] == "--server" {
353- let mut server: TcpServer = TcpServer :: new ( libos) ?;
353+ let mut server = TcpServer :: new ( libos) ?;
354354 return server. run ( sockaddr, NUM_PING_PONG_ROUNDS ) ;
355355 } else if args[ 1 ] == "--client" {
356- let mut client: TcpClient = TcpClient :: new ( libos) ?;
356+ let mut client = TcpClient :: new ( libos) ?;
357357 return client. run ( sockaddr, NUM_PING_PONG_ROUNDS ) ;
358358 }
359359 }
360360
361361 usage ( & args[ 0 ] ) ;
362-
363362 Ok ( ( ) )
364363}
0 commit comments