pub struct PinnedReader<A, O> { /* private fields */ }Expand description
Cheap immutable reader over one authenticated pinned checkout candidate.
Clones share the underlying stores and immutable generation root. Reads do not mutate checkout dependency state, so independent requests may overlap.
Implementations§
Source§impl<A: AsyncAuthorityStore, O: AsyncObjectStore> PinnedReader<A, O>
impl<A: AsyncAuthorityStore, O: AsyncObjectStore> PinnedReader<A, O>
Sourcepub async fn list_directory_pages(
&self,
requests: &[DirectoryPageRequest],
concurrency: usize,
budget: WorkBudget,
cancellation: &CancellationToken,
) -> FsResult<Vec<DirectoryPage>>
pub async fn list_directory_pages( &self, requests: &[DirectoryPageRequest], concurrency: usize, budget: WorkBudget, cancellation: &CancellationToken, ) -> FsResult<Vec<DirectoryPage>>
Lists ordered directory binding pages with at most concurrency
requests in flight while preserving input order. Finite budgets are
consumed sequentially so concurrent requests cannot each admit the
complete group budget.
Sourcepub async fn resolve_directory_page(
&self,
path: &NamespacePath,
after: Option<&LogicalName>,
maximum_entries: u32,
budget: WorkBudget,
cancellation: &CancellationToken,
) -> FsResult<ResolvedDirectoryPage<A, O>>
pub async fn resolve_directory_page( &self, path: &NamespacePath, after: Option<&LogicalName>, maximum_entries: u32, budget: WorkBudget, cancellation: &CancellationToken, ) -> FsResult<ResolvedDirectoryPage<A, O>>
Resolves one bounded directory page into generation-scoped child handles in the same authenticated traversal. Child metadata is fetched as one object batch; no child path is looked up again.
Sourcepub async fn plan_file_extents(
&self,
path: &NamespacePath,
range: ByteRange,
maximum_spans: u32,
budget: WorkBudget,
cancellation: &CancellationToken,
) -> FsResult<Option<ExtentPlan>>
pub async fn plan_file_extents( &self, path: &NamespacePath, range: ByteRange, maximum_spans: u32, budget: WorkBudget, cancellation: &CancellationToken, ) -> FsResult<Option<ExtentPlan>>
Plans sparse physical spans without reading content bodies.
Sourcepub async fn read_file_range(
&self,
path: &NamespacePath,
range: ByteRange,
budget: WorkBudget,
cancellation: &CancellationToken,
) -> FsResult<FileRangeRead>
pub async fn read_file_range( &self, path: &NamespacePath, range: ByteRange, budget: WorkBudget, cancellation: &CancellationToken, ) -> FsResult<FileRangeRead>
Reads one exact logical range without mutating checkout state.
Sourcepub async fn read_symbolic_link(
&self,
path: &NamespacePath,
budget: WorkBudget,
cancellation: &CancellationToken,
) -> FsResult<Bytes>
pub async fn read_symbolic_link( &self, path: &NamespacePath, budget: WorkBudget, cancellation: &CancellationToken, ) -> FsResult<Bytes>
Reads exact opaque symbolic-link target bytes without following it.
Sourcepub async fn read_metadata(
&self,
path: &NamespacePath,
budget: WorkBudget,
cancellation: &CancellationToken,
) -> FsResult<FileMetadata>
pub async fn read_metadata( &self, path: &NamespacePath, budget: WorkBudget, cancellation: &CancellationToken, ) -> FsResult<FileMetadata>
Reads complete canonical metadata for one exact path.
Sourcepub async fn describe_files(
&self,
paths: &[NamespacePath],
budget: WorkBudget,
cancellation: &CancellationToken,
) -> FsResult<Vec<Option<FileDescription>>>
pub async fn describe_files( &self, paths: &[NamespacePath], budget: WorkBudget, cancellation: &CancellationToken, ) -> FsResult<Vec<Option<FileDescription>>>
Describes an ordered path batch while sharing namespace and object traversal.
Sourcepub async fn resolve_files(
&self,
paths: &[NamespacePath],
budget: WorkBudget,
cancellation: &CancellationToken,
) -> FsResult<Vec<Option<ResolvedFile<A, O>>>>
pub async fn resolve_files( &self, paths: &[NamespacePath], budget: WorkBudget, cancellation: &CancellationToken, ) -> FsResult<Vec<Option<ResolvedFile<A, O>>>>
Resolves and describes paths once, returning reader-scoped handles for later body reads without another namespace traversal.
Sourcepub async fn read_resolved_ranges(
&self,
requests: &[ResolvedFileRangeReadRequest<'_, A, O>],
concurrency: usize,
budget: WorkBudget,
cancellation: &CancellationToken,
) -> FsResult<Vec<FileRangeRead>>
pub async fn read_resolved_ranges( &self, requests: &[ResolvedFileRangeReadRequest<'_, A, O>], concurrency: usize, budget: WorkBudget, cancellation: &CancellationToken, ) -> FsResult<Vec<FileRangeRead>>
Reads ranges from already resolved files with bounded concurrency and no additional namespace traversal.
Trait Implementations§
Auto Trait Implementations§
impl<A, O> !RefUnwindSafe for PinnedReader<A, O>
impl<A, O> !UnwindSafe for PinnedReader<A, O>
impl<A, O> Freeze for PinnedReader<A, O>
impl<A, O> Send for PinnedReader<A, O>
impl<A, O> Sync for PinnedReader<A, O>
impl<A, O> Unpin for PinnedReader<A, O>
impl<A, O> UnsafeUnpin for PinnedReader<A, O>where
Volume<A, O>: UnsafeUnpin,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request