From 0490c246be49c597367b74d98b29a7f629331eef Mon Sep 17 00:00:00 2001 From: Jackson Coxson Date: Sat, 18 Oct 2025 00:15:32 -0600 Subject: [PATCH] Add AFC write_with_callback --- idevice/src/services/afc/file.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/idevice/src/services/afc/file.rs b/idevice/src/services/afc/file.rs index 49f771b..e9bc424 100644 --- a/idevice/src/services/afc/file.rs +++ b/idevice/src/services/afc/file.rs @@ -130,4 +130,25 @@ impl FileDescriptor<'_> { } Ok(()) } + + pub async fn write_with_callback( + &mut self, + bytes: &[u8], + callback: impl Fn(((usize, usize), S)) -> Fut, + state: S, + ) -> Result<(), IdeviceError> + where + Fut: std::future::Future, + S: Clone, + { + let chunks = bytes.chunks(MAX_TRANSFER as usize); + let chunks_len = chunks.len(); + for (i, chunk) in chunks.enumerate() { + let header_payload = self.fd.to_le_bytes().to_vec(); + self.send_packet(AfcOpcode::Write, header_payload, chunk.to_vec()) + .await?; + callback(((i, chunks_len), state.clone())).await; + } + Ok(()) + } }