Skip to content

Commit b91f8ea

Browse files
committed
examples: more cleanup: remove type annotations and better names
Reduced syntactic clutter and used better names.
1 parent 29fad46 commit b91f8ea

15 files changed

Lines changed: 428 additions & 466 deletions

File tree

examples/rust/tcp-dump.rs

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,8 @@
88
//======================================================================================================================
99

1010
use ::anyhow::Result;
11-
use ::clap::{Arg, ArgMatches, Command};
12-
use ::demikernel::{
13-
demi_sgarray_t,
14-
runtime::types::{demi_opcode_t, demi_qresult_t},
15-
LibOS, LibOSName, QDesc, QToken,
16-
};
11+
use ::clap::{Arg, Command};
12+
use ::demikernel::{runtime::types::demi_opcode_t, LibOS, LibOSName, QDesc};
1713
use ::std::{
1814
net::SocketAddr,
1915
str::FromStr,
@@ -34,14 +30,14 @@ pub const SOCK_STREAM: i32 = libc::SOCK_STREAM;
3430

3531
#[derive(Debug)]
3632
pub struct ProgramArguments {
37-
local_socket_addr: SocketAddr,
33+
local_addr: SocketAddr,
3834
}
3935

4036
impl ProgramArguments {
4137
const DEFAULT_LOCAL_IPV4_ADDR: &'static str = "127.0.0.1:12345";
4238

4339
pub fn new() -> Result<Self> {
44-
let matches: ArgMatches = Command::new("tcp-dump")
40+
let matches = Command::new("tcp-dump")
4541
.arg(
4642
Arg::new("local")
4743
.long("local")
@@ -52,23 +48,23 @@ impl ProgramArguments {
5248
)
5349
.get_matches();
5450

55-
let mut args: ProgramArguments = ProgramArguments {
56-
local_socket_addr: SocketAddr::from_str(Self::DEFAULT_LOCAL_IPV4_ADDR)?,
51+
let mut args = ProgramArguments {
52+
local_addr: SocketAddr::from_str(Self::DEFAULT_LOCAL_IPV4_ADDR)?,
5753
};
5854

5955
if let Some(addr) = matches.get_one::<String>("local") {
60-
args.set_local_socket_addr(addr)?;
56+
args.set_local_addr(addr)?;
6157
}
6258

6359
Ok(args)
6460
}
6561

66-
pub fn local_socket_addr(&self) -> SocketAddr {
67-
self.local_socket_addr
62+
pub fn local_addr(&self) -> SocketAddr {
63+
self.local_addr
6864
}
6965

70-
fn set_local_socket_addr(&mut self, addr: &str) -> Result<()> {
71-
self.local_socket_addr = SocketAddr::from_str(addr)?;
66+
fn set_local_addr(&mut self, addr: &str) -> Result<()> {
67+
self.local_addr = SocketAddr::from_str(addr)?;
7268
Ok(())
7369
}
7470
}
@@ -82,13 +78,13 @@ impl Application {
8278
const LOG_INTERVAL_SECONDS: u64 = 5;
8379

8480
pub fn new(mut libos: LibOS, args: &ProgramArguments) -> Result<Self> {
85-
let local_socket_addr: SocketAddr = args.local_socket_addr();
86-
let sockqd: QDesc = match libos.socket(AF_INET, SOCK_STREAM, 0) {
81+
let addr = args.local_addr();
82+
let sockqd = match libos.socket(AF_INET, SOCK_STREAM, 0) {
8783
Ok(sockqd) => sockqd,
8884
Err(e) => anyhow::bail!("failed to create socket: {:?}", e),
8985
};
9086

91-
match libos.bind(sockqd, local_socket_addr) {
87+
match libos.bind(sockqd, addr) {
9288
Ok(()) => (),
9389
Err(e) => {
9490
// If error, close socket.
@@ -112,18 +108,18 @@ impl Application {
112108
},
113109
}
114110

115-
println!("Local Address: {:?}", local_socket_addr);
111+
println!("Local Address: {:?}", addr);
116112

117113
Ok(Self { libos, sockqd })
118114
}
119115

120116
pub fn run(&mut self) -> Result<()> {
121-
let start_time: Instant = Instant::now();
122-
let mut num_clients: usize = 0;
123-
let mut num_bytes: usize = 0;
124-
let mut qtokens: Vec<QToken> = Vec::new();
125-
let mut last_log_time: Instant = Instant::now();
126-
let mut client_qds: Vec<QDesc> = Vec::default();
117+
let start_time = Instant::now();
118+
let mut num_clients = 0;
119+
let mut num_bytes = 0;
120+
let mut qtokens = Vec::new();
121+
let mut last_log_time = Instant::now();
122+
let mut client_qds = Vec::default();
127123

128124
// Accept first connection.
129125
match self.libos.accept(self.sockqd) {
@@ -134,7 +130,7 @@ impl Application {
134130
loop {
135131
// Dump statistics.
136132
if last_log_time.elapsed() > Duration::from_secs(Self::LOG_INTERVAL_SECONDS) {
137-
let elapsed_time: Duration = Instant::now() - start_time;
133+
let elapsed_time = Instant::now() - start_time;
138134
println!(
139135
"nclients={:?} / {:?} B / {:?} us",
140136
num_clients,
@@ -144,7 +140,7 @@ impl Application {
144140
last_log_time = Instant::now();
145141
}
146142

147-
let qr: demi_qresult_t = match self.libos.wait_any(&qtokens, None) {
143+
let qr = match self.libos.wait_any(&qtokens, None) {
148144
Ok((i, qr)) => {
149145
qtokens.swap_remove(i);
150146
qr
@@ -158,7 +154,7 @@ impl Application {
158154
num_clients += 1;
159155

160156
// Pop first packet from this connection.
161-
let sockqd: QDesc = unsafe { qr.qr_value.ares.qd.into() };
157+
let sockqd = unsafe { qr.qr_value.ares.qd.into() };
162158
client_qds.push(sockqd);
163159
match self.libos.pop(sockqd, None) {
164160
Ok(qt) => qtokens.push(qt),
@@ -173,8 +169,8 @@ impl Application {
173169
},
174170
// Pop completed.
175171
demi_opcode_t::DEMI_OPC_POP => {
176-
let sockqd: QDesc = qr.qr_qd.into();
177-
let sga: demi_sgarray_t = unsafe { qr.qr_value.sga };
172+
let sockqd = qr.qr_qd.into();
173+
let sga = unsafe { qr.qr_value.sga };
178174

179175
num_bytes += sga.segments[0].data_len_bytes as usize;
180176

@@ -184,7 +180,7 @@ impl Application {
184180
}
185181

186182
// Pop another packet.
187-
let qt: QToken = match self.libos.pop(sockqd, None) {
183+
let qt = match self.libos.pop(sockqd, None) {
188184
Ok(qt) => qt,
189185
Err(e) => anyhow::bail!("failed to pop data from socket: {:?}", e),
190186
};
@@ -212,12 +208,12 @@ impl Drop for Application {
212208
}
213209

214210
fn main() -> Result<()> {
215-
let args: ProgramArguments = ProgramArguments::new()?;
216-
let libos_name: LibOSName = match LibOSName::from_env() {
211+
let args = ProgramArguments::new()?;
212+
let libos_name = match LibOSName::from_env() {
217213
Ok(libos_name) => libos_name.into(),
218214
Err(e) => anyhow::bail!("{:?}", e),
219215
};
220-
let libos: LibOS = match LibOS::new(libos_name, None) {
216+
let libos = match LibOS::new(libos_name, None) {
221217
Ok(libos) => libos,
222218
Err(e) => anyhow::bail!("failed to initialize libos: {:?}", e.cause),
223219
};

examples/rust/tcp-ping-pong.rs

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// Imports
99
//======================================================================================================================
1010
use ::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};
1212
use ::std::{env, net::SocketAddr, slice, str::FromStr, time::Duration, u8};
1313
use log::{error, warn};
1414

@@ -33,15 +33,15 @@ const NUM_PING_PONG_ROUNDS: usize = 1024;
3333
const TIMEOUT_SECONDS: Duration = Duration::from_secs(256);
3434

3535
fn 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

7272
fn 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

9898
fn 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

112112
fn 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

157157
impl 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

258258
impl 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

Comments
 (0)