in cas_client/src/upload_progress_stream.rs [54:75]
fn poll_next(mut self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
debug_assert_le!(self.bytes_sent, self.data.len());
if self.bytes_sent == self.data.len() {
return Poll::Ready(None);
}
// First, see if we need to send off a progress report -- we assume that when this method is called,
// the previous data has
// successfully completed uploading.
if self.bytes_sent != 0 {
self.progress_callback.update(self.bytes_sent);
}
let slice_start = self.bytes_sent;
let slice_end = (self.bytes_sent + self.block_size).min(self.data.len());
self.bytes_sent = slice_end;
Poll::Ready(Some(Ok(self.data.slice(slice_start..slice_end))))
}