[thin_check (rust)] Change io_engine trait to use slices rather than Vecs

This commit is contained in:
Joe Thornber 2020-08-18 12:57:05 +01:00
parent 2aa6859502
commit cdd0beb527

View File

@ -50,10 +50,9 @@ unsafe impl Send for Block {}
pub trait IoEngine { pub trait IoEngine {
fn get_nr_blocks(&self) -> u64; fn get_nr_blocks(&self) -> u64;
fn read(&self, block: &mut Block) -> Result<()>; fn read(&self, block: &mut Block) -> Result<()>;
// FIXME: change to &[Block] fn read_many(&self, blocks: &mut [Block]) -> Result<()>;
fn read_many(&self, blocks: &mut Vec<Block>) -> Result<()>;
fn write(&self, block: &Block) -> Result<()>; fn write(&self, block: &Block) -> Result<()>;
fn write_many(&self, blocks: &Vec<Block>) -> Result<()>; fn write_many(&self, blocks: &[Block]) -> Result<()>;
} }
fn get_nr_blocks(path: &Path) -> io::Result<u64> { fn get_nr_blocks(path: &Path) -> io::Result<u64> {
@ -123,7 +122,7 @@ impl IoEngine for SyncIoEngine {
Ok(()) Ok(())
} }
fn read_many(&self, blocks: &mut Vec<Block>) -> Result<()> { fn read_many(&self, blocks: &mut [Block]) -> Result<()> {
let mut input = self.get(); let mut input = self.get();
for b in blocks { for b in blocks {
input.seek(io::SeekFrom::Start(b.loc * BLOCK_SIZE as u64))?; input.seek(io::SeekFrom::Start(b.loc * BLOCK_SIZE as u64))?;
@ -143,7 +142,7 @@ impl IoEngine for SyncIoEngine {
Ok(()) Ok(())
} }
fn write_many(&self, blocks: &Vec<Block>) -> Result<()> { fn write_many(&self, blocks: &[Block]) -> Result<()> {
let mut input = self.get(); let mut input = self.get();
for b in blocks { for b in blocks {
input.seek(io::SeekFrom::Start(b.loc * BLOCK_SIZE as u64))?; input.seek(io::SeekFrom::Start(b.loc * BLOCK_SIZE as u64))?;
@ -300,7 +299,7 @@ impl IoEngine for AsyncIoEngine {
Ok(()) Ok(())
} }
fn read_many(&self, blocks: &mut Vec<Block>) -> Result<()> { fn read_many(&self, blocks: &mut [Block]) -> Result<()> {
let inner = self.inner.lock().unwrap(); let inner = self.inner.lock().unwrap();
let queue_len = inner.queue_len as usize; let queue_len = inner.queue_len as usize;
drop(inner); drop(inner);
@ -340,7 +339,7 @@ impl IoEngine for AsyncIoEngine {
Ok(()) Ok(())
} }
fn write_many(&self, blocks: &Vec<Block>) -> Result<()> { fn write_many(&self, blocks: &[Block]) -> Result<()> {
let inner = self.inner.lock().unwrap(); let inner = self.inner.lock().unwrap();
let queue_len = inner.queue_len as usize; let queue_len = inner.queue_len as usize;
drop(inner); drop(inner);