Skip to content

Commit 09f1f25

Browse files
committed
pldm-file: Print speed in host example
The pldm-file-host example also uses env_logger now with a default level of info. RUST_LOG=trace can be set for debug purposes. [Minor formatting change from Jeremy Kerr <[email protected]>] Signed-off-by: Matt Johnston <[email protected]> Signed-off-by: Jeremy Kerr <[email protected]>
1 parent 87fedb9 commit 09f1f25

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

pldm-file/examples/host.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ use std::cell::RefCell;
1010
use std::fs::File;
1111
use std::io::{Read, Seek, SeekFrom};
1212
use std::os::unix::fs::MetadataExt;
13+
use std::time::{Duration, Instant};
1314

1415
struct Host {
1516
file: RefCell<File>,
17+
stamp: RefCell<(Instant, usize)>,
1618
}
1719

1820
const FILENAME: &str = "pldm-file-host.bin";
@@ -25,12 +27,21 @@ impl Host {
2527
file: RefCell::new(File::open(FILENAME).with_context(|| {
2628
format!("cannot open input file {FILENAME}")
2729
})?),
30+
stamp: RefCell::new((Instant::now(), 0)),
2831
})
2932
}
3033
}
3134

3235
impl pldm_file::host::Host for Host {
3336
fn read(&self, buf: &mut [u8], offset: usize) -> std::io::Result<usize> {
37+
let mut stamp = self.stamp.borrow_mut();
38+
let now = Instant::now();
39+
let del = now - stamp.0;
40+
if del > Duration::from_secs(2) {
41+
let rate = (offset - stamp.1) / del.as_millis() as usize;
42+
info!("{rate} kB/s, offset {offset}");
43+
*stamp = (now, offset);
44+
}
3445
let mut file = self.file.borrow_mut();
3546
file.seek(SeekFrom::Start(offset as u64))?;
3647
file.read(buf)
@@ -40,7 +51,8 @@ impl pldm_file::host::Host for Host {
4051
type FileResponder = pldm_file::host::Responder<1>;
4152

4253
fn main() -> Result<()> {
43-
env_logger::init();
54+
let log_env = env_logger::Env::default().filter_or("RUST_LOG", "info");
55+
env_logger::init_from_env(log_env);
4456

4557
let mut listener = MctpLinuxAsyncListener::new(mctp::MCTP_TYPE_PLDM, None)?;
4658
let mut pldm_ctrl = pldm::control::responder::Responder::<2>::new();

0 commit comments

Comments
 (0)