Skip to main content

CovenReadHandle

Struct CovenReadHandle 

Source
pub struct CovenReadHandle { /* private fields */ }
Expand description

A handle that reads synced rows and maintains its local file cache (§4, E1). Its shared store lock prevents deletion until all its connections close. Its SQL may not read coven_sync_status: it can’t tell whether the writer that last wrote the row still runs (E5).

ⓘ
async fn no_writes(handle: &coven::CovenReadHandle) {
    handle.write(|_| Ok::<_, coven::CovenError>(())).await;
}
ⓘ
fn no_live_query(handle: &coven::CovenReadHandle) {
    handle.subscribe(|_| Ok::<_, coven::CovenError>(()));
}

Implementations§

Source§

impl CovenReadHandle

Source

pub async fn store_name(&self) -> CovenResult<String>

The store’s current name from this device’s committed state (E9).

Source

pub fn read<F, R, E>(&self, read: F) -> Read<'_, F, ReadOnly> ⓘ
where F: FnOnce(SqlReadContext<'_>) -> Result<R, E> + Send + 'static, R: Send + 'static, E: From<DbError> + CarriesBug + Send + 'static,

A read of one consistent snapshot, run when awaited.

Source

pub async fn sqlite_settings(&self) -> Result<SqliteSettingsInEffect, DbError>

The SQLite settings this handle’s connections have in effect (§4).

Source

pub async fn file_ref(&self, file: FileId) -> Result<FileRef, DbError>

The file a row references, by the id the row holds.

Source

pub async fn user_file(&self, file: FileId) -> Result<Option<UserFile>, DbError>

The path, size and modification time recorded for a file’s original.

Source

pub async fn read_file(&self, file: &FileRef) -> Result<Vec<u8>, FileReadError>

Reads a whole file. A stored file is checked against its content hash.

Source

pub async fn open_file_stream( &self, file: &FileRef, ) -> Result<FileStream<ReadOnly>, FileReadError>

Opens a file for reading ranges (§17.7), as its record stands when it opens; keep the stream for as long as the file is read. Its shared store lock prevents deletion until it and its I/O finish.

Source

pub async fn close(&self) -> Result<(), DbError>

Closes read and cache connections on all clones and releases their storage client and shared store lock, while the app still holds the handle. From its first poll every clone refuses new calls with StoreClosed; the closing itself runs as its own task, so dropping this future doesn’t stop it (E1, E15). File streams retain their own locks.

Trait Implementations§

Source§

impl Clone for CovenReadHandle

Source§

fn clone(&self) -> CovenReadHandle

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,