Skip to main content

vortex_io/compat/
read_at.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use std::sync::Arc;
5
6use futures::FutureExt;
7use futures::future::BoxFuture;
8use vortex_array::buffer::BufferHandle;
9use vortex_buffer::Alignment;
10use vortex_error::VortexResult;
11
12use crate::CoalesceConfig;
13use crate::VortexReadAt;
14use crate::compat::Compat;
15
16/// Compatibility adapter for `VortexReadAt` implementations that are based on Tokio.
17#[deny(clippy::missing_trait_methods)]
18impl<R: VortexReadAt> VortexReadAt for Compat<R> {
19    fn uri(&self) -> Option<&Arc<str>> {
20        self.inner().uri()
21    }
22
23    fn coalesce_config(&self) -> Option<CoalesceConfig> {
24        self.inner().coalesce_config()
25    }
26
27    fn concurrency(&self) -> usize {
28        self.inner().concurrency()
29    }
30
31    fn size(&self) -> BoxFuture<'static, VortexResult<u64>> {
32        self.inner().size()
33    }
34
35    fn read_at(
36        &self,
37        offset: u64,
38        length: usize,
39        alignment: Alignment,
40    ) -> BoxFuture<'static, VortexResult<BufferHandle>> {
41        Compat::new(self.inner().read_at(offset, length, alignment)).boxed()
42    }
43}