Skip to content

Commit 0da4650

Browse files
committed
added specific functions to AsyncFileReader trait so we know where we are wrt. caching
1 parent b1ea079 commit 0da4650

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/ifd.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,7 @@ impl ImageFileDirectory {
779779
let range = self
780780
.get_tile_byte_range(x, y)
781781
.ok_or(AsyncTiffError::General("Not a tiled TIFF".to_string()))?;
782-
let compressed_bytes = reader.get_bytes(range).await?;
782+
let compressed_bytes = reader.get_tile_bytes(range).await?;
783783
Ok(Tile {
784784
x,
785785
y,
@@ -810,7 +810,7 @@ impl ImageFileDirectory {
810810
.collect::<AsyncTiffResult<Vec<_>>>()?;
811811

812812
// 2: Fetch using `get_ranges
813-
let buffers = reader.get_byte_ranges(byte_ranges).await?;
813+
let buffers = reader.get_tile_byte_ranges(byte_ranges).await?;
814814

815815
// 3: Create tile objects
816816
let mut tiles = vec![];

src/reader.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,18 @@ pub trait AsyncFileReader: Debug + Send + Sync {
5252
}
5353
.boxed()
5454
}
55+
56+
/// Same as [`get_bytes`], but this function is called when retrieving
57+
/// compressed tile data
58+
fn get_tile_bytes(&self, range: Range<u64>) -> BoxFuture<'_, AsyncTiffResult<Bytes>> {
59+
self.get_bytes(range)
60+
}
61+
62+
/// Same as [`get_byte_ranges`], but this function is only called when retrieving
63+
/// compressed tile data
64+
fn get_tile_byte_ranges(&self, ranges: Vec<Range<u64>>) -> BoxFuture<'_, AsyncTiffResult<Vec<Bytes>>> {
65+
self.get_byte_ranges(ranges)
66+
}
5567
}
5668

5769
/// This allows Box<dyn AsyncFileReader + '_> to be used as an AsyncFileReader,

0 commit comments

Comments
 (0)