pub struct ResponseEncoder<'a> { /* private fields */ }Expand description
An independent response cursor with bounded inline framing state. The host
owns the repository, request and control buffers. Keep the same stable
repository for every read; it may be recreated from immutable inputs.
Discovery/ref/ACK bytes must fit control; object bodies never use it.
A completed prepare validates routes, commands, wants and selection budgets
before output. Provider failures after headers require aborting the transport.
Implementations§
Source§impl<'a> ResponseEncoder<'a>
impl<'a> ResponseEncoder<'a>
Sourcepub fn new(
repository: &impl Repository,
request: Request<'_>,
control: &'a mut [u8],
) -> Result<Self>
pub fn new( repository: &impl Repository, request: Request<'_>, control: &'a mut [u8], ) -> Result<Self>
Prepare a HEAD-only repository. Independent roots need with_selection.
Sourcepub fn with_selection<R: Repository + ?Sized>(
repository: &ValidatedRepository<'_, '_, R>,
request: Request<'_>,
storage: &'a mut SelectionStorage<'_>,
control: &'a mut [u8],
) -> Result<Self>
pub fn with_selection<R: Repository + ?Sized>( repository: &ValidatedRepository<'_, '_, R>, request: Request<'_>, storage: &'a mut SelectionStorage<'_>, control: &'a mut [u8], ) -> Result<Self>
Prepare the exact requested closure with the same limits as
serve_with_selection. Selection slots stay borrowed until this cursor
is dropped; separate storage permits independent overlapping responses.
Sourcepub fn with_selection_storage<R: Repository + ?Sized>(
repository: &ValidatedRepository<'_, '_, R>,
request: Request<'_>,
storage: SelectionStorage<'a>,
control: &'a mut [u8],
) -> Result<Self>
pub fn with_selection_storage<R: Repository + ?Sized>( repository: &ValidatedRepository<'_, '_, R>, request: Request<'_>, storage: SelectionStorage<'a>, control: &'a mut [u8], ) -> Result<Self>
Move a request’s storage descriptor into preparation. Only its selected index array and control bytes remain borrowed by the resulting cursor.
Sourcepub fn with_selection_policy<R: Repository + ?Sized>(
repository: &ValidatedRepository<'_, '_, R>,
request: Request<'_>,
storage: &'a mut SelectionStorage<'_>,
options: WantOptions,
control: &'a mut [u8],
) -> Result<Self>
pub fn with_selection_policy<R: Repository + ?Sized>( repository: &ValidatedRepository<'_, '_, R>, request: Request<'_>, storage: &'a mut SelectionStorage<'_>, options: WantOptions, control: &'a mut [u8], ) -> Result<Self>
Additive host-granted selection. Only selected indices/control are pinned; the policy cannot be inherited by another cursor or strict constructor.
pub fn with_selection_storage_policy<R: Repository + ?Sized>( repository: &ValidatedRepository<'_, '_, R>, request: Request<'_>, storage: SelectionStorage<'a>, options: WantOptions, control: &'a mut [u8], ) -> Result<Self>
Sourcepub fn with_revisions<R: Repository + ?Sized>(
repository: &ValidatedRepository<'_, '_, R>,
request: Request<'_>,
storage: &'a mut RevisionStorage<'_>,
control: &'a mut [u8],
) -> Result<Self>
pub fn with_revisions<R: Repository + ?Sized>( repository: &ValidatedRepository<'_, '_, R>, request: Request<'_>, storage: &'a mut RevisionStorage<'_>, control: &'a mut [u8], ) -> Result<Self>
Opt in to time/exclusion deepening. Boundary state is temporary; only selected indices and prepared control bytes survive in the response.
pub fn with_revision_storage<R: Repository + ?Sized>( repository: &ValidatedRepository<'_, '_, R>, request: Request<'_>, storage: RevisionStorage<'a>, control: &'a mut [u8], ) -> Result<Self>
Sourcepub fn with_revision_storage_policy<R: Repository + ?Sized>(
repository: &ValidatedRepository<'_, '_, R>,
request: Request<'_>,
storage: RevisionStorage<'a>,
options: WantOptions,
control: &'a mut [u8],
) -> Result<Self>
pub fn with_revision_storage_policy<R: Repository + ?Sized>( repository: &ValidatedRepository<'_, '_, R>, request: Request<'_>, storage: RevisionStorage<'a>, options: WantOptions, control: &'a mut [u8], ) -> Result<Self>
Combine explicit revision budgets with a request-local want grant. Neither capability can be inherited by another response or a strict constructor.