1use delivery_blob::compression::{ChunkedArchiveError, DataBuffer};
6use std::ops::Range;
7use storage_ptr_slice::MutPtrByteSlice;
8
9pub trait PageRequest: DataBuffer {
11 fn prepare(&mut self, read_range: Range<u64>) -> Result<(), ChunkedArchiveError>;
15}
16
17pub struct NullPageRequest;
19
20impl DataBuffer for NullPageRequest {
21 fn range(&self) -> Range<u64> {
22 0..0
23 }
24
25 fn mut_ptr_slice(&mut self) -> MutPtrByteSlice<'_> {
26 MutPtrByteSlice::from(&mut [][..])
27 }
28
29 fn commit(&mut self, _size: usize) -> Result<(), ChunkedArchiveError> {
30 Ok(())
31 }
32}
33
34impl PageRequest for NullPageRequest {
35 fn prepare(&mut self, _read_range: Range<u64>) -> Result<(), ChunkedArchiveError> {
36 Ok(())
37 }
38}
39
40#[cfg(test)]
41mod tests {
42 use super::*;
43
44 #[test]
45 fn test_null_page_request() {
46 let mut req = NullPageRequest;
47 assert_eq!(req.range(), 0..0);
48 assert!(req.prepare(0..4096).is_ok());
49 assert_eq!(req.mut_ptr_slice().len(), 0);
50 assert!(req.commit(0).is_ok());
51 }
52}