AsyncIndexReader: avoid memcpy, add clippy lint fixup comment
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
parent
8db1468952
commit
61c6eafc08
|
@ -15,6 +15,17 @@ use super::IndexFile;
|
||||||
use super::read_chunk::AsyncReadChunk;
|
use super::read_chunk::AsyncReadChunk;
|
||||||
use super::index::ChunkReadInfo;
|
use super::index::ChunkReadInfo;
|
||||||
|
|
||||||
|
// FIXME: This enum may not be required?
|
||||||
|
// - Put the `WaitForData` case directly into a `read_future: Option<>`
|
||||||
|
// - make the read loop as follows:
|
||||||
|
// * if read_buffer is not empty:
|
||||||
|
// use it
|
||||||
|
// * else if read_future is there:
|
||||||
|
// poll it
|
||||||
|
// if read: move data to read_buffer
|
||||||
|
// * else
|
||||||
|
// create read future
|
||||||
|
#[allow(clippy::enum_variant_names)]
|
||||||
enum AsyncIndexReaderState<S> {
|
enum AsyncIndexReaderState<S> {
|
||||||
NoData,
|
NoData,
|
||||||
WaitForData(Pin<Box<dyn Future<Output = Result<(S, Vec<u8>), Error>> + Send + 'static>>),
|
WaitForData(Pin<Box<dyn Future<Output = Result<(S, Vec<u8>), Error>> + Send + 'static>>),
|
||||||
|
@ -118,9 +129,8 @@ where
|
||||||
}
|
}
|
||||||
AsyncIndexReaderState::WaitForData(ref mut future) => {
|
AsyncIndexReaderState::WaitForData(ref mut future) => {
|
||||||
match ready!(future.as_mut().poll(cx)) {
|
match ready!(future.as_mut().poll(cx)) {
|
||||||
Ok((store, mut chunk_data)) => {
|
Ok((store, chunk_data)) => {
|
||||||
this.read_buffer.clear();
|
this.read_buffer = chunk_data;
|
||||||
this.read_buffer.append(&mut chunk_data);
|
|
||||||
this.state = AsyncIndexReaderState::HaveData;
|
this.state = AsyncIndexReaderState::HaveData;
|
||||||
this.store = Some(store);
|
this.store = Some(store);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue