Skip to content

Commit 851360e

Browse files
committed
pldm-file: examples: Use df_read_with for printing per-transfer logs
Handy to have some indication about individual transfer operations. Signed-off-by: Jeremy Kerr <[email protected]>
1 parent a4c54e5 commit 851360e

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

pldm-file/examples/client.rs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
use anyhow::{Context, Result};
22
use mctp::Eid;
33
use mctp_linux::MctpLinuxAsyncReq;
4-
use pldm::control::requester::negotiate_transfer_parameters;
4+
use pldm::{control::requester::negotiate_transfer_parameters, PldmError};
55
use pldm_file::{
6-
client::{df_close, df_open, df_properties, df_read},
6+
client::{df_close, df_open, df_properties, df_read_with},
77
proto::{DfCloseAttributes, DfOpenAttributes, DfProperty, FileIdentifier},
88
};
99

@@ -36,8 +36,21 @@ fn main() -> Result<()> {
3636

3737
println!("Open: {fd:?}");
3838

39-
let mut buf = vec![0; 4096];
40-
let res = df_read(&mut req, fd, 0, &mut buf).await;
39+
let mut buf = Vec::new();
40+
let req_len = 4096;
41+
42+
println!("Reading...");
43+
let res = df_read_with(&mut req, fd, 0, req_len, |part| {
44+
println!(" {} bytes", part.len());
45+
if buf.len() + part.len() > req_len {
46+
println!(" data overflow!");
47+
Err(PldmError::NoSpace)
48+
} else {
49+
buf.extend_from_slice(part);
50+
Ok(())
51+
}
52+
})
53+
.await;
4154

4255
println!("Read: {res:?}");
4356

0 commit comments

Comments
 (0)