Skip to main content

Lb

Struct Lb 

Source
pub struct Lb {
    pub config: Config,
    pub user_last_seen: Arc<RwLock<Instant>>,
    pub user_wake: Arc<Notify>,
    pub keychain: Keychain,
    pub db: Arc<RwLock<CoreDb>>,
    pub docs: AsyncDocs,
    pub client: Network,
    pub events: EventSubs,
    pub status: StatusUpdater,
    pub syncer: Syncer,
    /* private fields */
}

Fields§

§config: Config§user_last_seen: Arc<RwLock<Instant>>§user_wake: Arc<Notify>§keychain: Keychain§db: Arc<RwLock<CoreDb>>§docs: AsyncDocs§client: Network§events: EventSubs§status: StatusUpdater§syncer: Syncer

Implementations§

Source§

impl Lb

Source

pub async fn ro_tx(&self) -> LbRO<'_>

Source

pub async fn begin_tx(&self) -> LbTx<'_>

note: you cannot call init for the same config, from the same tokio runtime, or you risk deadlock. See the test contended_transactions_do_not_block_the_runtime for more info. several workarounds exist for this situation that shouldn’t really be required: Lb is cheap to clone within the same runtime Different data directories are fine

If this situation actually becomes required:

a config could be added to turn off file locks which is what results in tokio deadlocks, but then what are you doing with multiple log writers writing to the same location?

we could incur a small perf penalty and put the begin_tx in a tokio::blocking wrapper. This is how tokio wants us to handle this, but I do not want the overhead.

Source§

impl Lb

Source

pub async fn path_searcher(&self) -> PathSearcher

Source§

impl Lb

Source

pub async fn create_account( &self, username: &str, api_url: &str, welcome_doc: bool, ) -> LbResult<Account>

CoreError::AccountExists, CoreError::UsernameTaken, CoreError::UsernameInvalid, CoreError::ServerDisabled, CoreError::ServerUnreachable, CoreError::ClientUpdateRequired,

Source

pub async fn import_account( &self, key: &str, api_url: Option<&str>, ) -> LbResult<Account>

Source

pub async fn import_account_private_key_v1( &self, account: Account, ) -> LbResult<Account>

Source

pub async fn import_account_private_key_v2( &self, private_key: SecretKey, api_url: &str, ) -> LbResult<Account>

Source

pub async fn import_account_phrase( &self, phrase: [&str; 24], api_url: &str, ) -> LbResult<Account>

Source

pub fn export_account_private_key(&self) -> LbResult<String>

Source

pub fn export_account_phrase(&self) -> LbResult<String>

Source

pub fn export_account_qr(&self) -> LbResult<Vec<u8>>

Source

pub async fn delete_account(&self) -> LbResult<()>

Source§

impl Lb

Source

pub async fn suggested_docs( &self, settings: RankingWeights, ) -> LbResult<Vec<Uuid>>

Source

pub async fn clear_suggested(&self) -> LbResult<()>

Source

pub async fn clear_suggested_id(&self, id: Uuid) -> LbResult<()>

Source

pub fn app_foregrounded(&self)

hint to background processing pipelines whether or not a user is around

Source§

impl Lb

Source

pub async fn disappear_account(&self, username: &str) -> LbResult<()>

Source

pub async fn disappear_file(&self, id: Uuid) -> LbResult<()>

Source

pub async fn list_users( &self, filter: Option<AccountFilter>, ) -> LbResult<Vec<Username>>

Source

pub async fn get_account_info( &self, identifier: AccountIdentifier, ) -> LbResult<AccountInfo>

Source

pub async fn validate_account( &self, username: &str, ) -> LbResult<AdminValidateAccount>

Source

pub async fn validate_server(&self) -> LbResult<AdminValidateServer>

Source

pub async fn file_info(&self, id: Uuid) -> LbResult<AdminFileInfoResponse>

Source

pub async fn rebuild_index(&self, index: ServerIndex) -> LbResult<()>

Source

pub async fn set_user_tier( &self, username: &str, info: AdminSetUserTierInfo, ) -> LbResult<()>

Source§

impl Lb

Source

pub async fn upgrade_account_stripe( &self, account_tier: StripeAccountTier, ) -> LbResult<()>

Source

pub async fn upgrade_account_google_play( &self, purchase_token: &str, account_id: &str, ) -> LbResult<()>

Source

pub async fn upgrade_account_app_store( &self, original_transaction_id: String, app_account_token: String, ) -> LbResult<()>

Source

pub async fn cancel_subscription(&self) -> LbResult<()>

Source

pub async fn get_subscription_info(&self) -> LbResult<Option<SubscriptionInfo>>

Source§

impl Lb

Source

pub async fn recent_panic(&self) -> LbResult<bool>

returns true if we have crashed within the last 5 seconds

Source

pub async fn write_panic_to_file( &self, error_header: String, bt: String, ) -> LbResult<String>

Source

pub async fn debug_info( &self, os_info: String, check_docs: bool, ) -> LbResult<DebugInfo>

Source§

impl Lb

Source

pub async fn read_document( &self, id: Uuid, user_activity: bool, ) -> LbResult<DecryptedDocument>

Source

pub async fn write_document(&self, id: Uuid, content: &[u8]) -> LbResult<()>

Source

pub async fn read_document_with_hmac( &self, id: Uuid, user_activity: bool, ) -> LbResult<(Option<DocumentHmac>, DecryptedDocument)>

Source

pub async fn safe_write( &self, id: Uuid, old_hmac: Option<DocumentHmac>, content: Vec<u8>, origin: Option<Uuid>, ) -> LbResult<DocumentHmac>

Source§

impl Lb

Source

pub fn subscribe(&self) -> Receiver<Event>

Source§

impl Lb

Source

pub async fn create_file( &self, name: &str, parent: &Uuid, file_type: FileType, ) -> LbResult<File>

Source

pub async fn rename_file(&self, id: &Uuid, new_name: &str) -> LbResult<()>

Source

pub async fn move_file(&self, id: &Uuid, new_parent: &Uuid) -> LbResult<()>

Source

pub async fn duplicate_file(&self, id: &Uuid) -> LbResult<File>

Source

pub async fn delete(&self, id: &Uuid) -> LbResult<()>

Source

pub async fn root(&self) -> LbResult<File>

Source

pub async fn list_metadatas(&self) -> LbResult<Vec<File>>

Source

pub async fn get_children(&self, id: &Uuid) -> LbResult<Vec<File>>

Source

pub async fn get_and_get_children_recursively( &self, id: &Uuid, ) -> LbResult<Vec<File>>

Source

pub async fn get_file_by_id(&self, id: Uuid) -> LbResult<File>

Source

pub async fn local_changes(&self) -> Vec<Uuid>

Source§

impl Lb

Source

pub async fn import_files<F: Fn(ImportStatus)>( &self, sources: &[PathBuf], dest: Uuid, update_status: &F, ) -> LbResult<()>

Source

pub async fn export_file<F: Fn(ExportFileInfo)>( &self, id: Uuid, dest: PathBuf, edit: bool, update_status: &Option<F>, ) -> LbResult<()>

Source

pub async fn export_file_recursively<F: Fn(ExportFileInfo)>( &self, id: Uuid, disk_path: &Path, edit: bool, update_status: &Option<F>, ) -> LbResult<()>

Source§

impl Lb

Source

pub async fn test_repo_integrity( &self, check_docs: bool, ) -> LbResult<Vec<Warning>>

Source§

impl Lb

Source§

impl Lb

Source

pub async fn create_at_path(&self, path: &str) -> LbResult<File>

Source

pub async fn get_by_path(&self, path: &str) -> LbResult<File>

Source

pub async fn get_path_by_id(&self, id: Uuid) -> LbResult<String>

Source

pub async fn list_paths(&self, filter: Option<Filter>) -> LbResult<Vec<String>>

Source

pub async fn list_paths_with_ids( &self, filter: Option<Filter>, ) -> LbResult<Vec<(Uuid, String)>>

Source§

impl Lb

Source

pub async fn pin_file(&self, id: Uuid) -> LbResult<()>

Source

pub async fn unpin_file(&self, id: Uuid) -> LbResult<()>

Source

pub async fn list_pinned(&self) -> LbResult<Vec<Uuid>>

Source§

impl Lb

Source

pub async fn get_sharing_contacts(&self) -> LbResult<Vec<SharingContact>>

Ranked contacts for the signed-in account. This is a local, read-only query; callers should run it off their UI thread. Inheritance follows real metadata parents, never the local placement of a link.

Source

pub async fn share_file( &self, id: Uuid, username: &str, mode: ShareMode, ) -> LbResult<()>

Source

pub async fn get_pending_shares(&self) -> LbResult<Vec<File>>

returns pending shares – files shared with us that we haven’t accepted or rejected this function just returns the actual files that were shared – or the roots of shared trees. For the full set of shares see Self::get_pending_share_files

Source

pub async fn get_pending_share_files(&self) -> LbResult<Vec<File>>

returns all the files associated with any pending shares (the share as well as it’s descendants).

Source

pub async fn known_usernames(&self) -> LbResult<Vec<String>>

Source

pub async fn username_exists(&self, username: &str) -> LbResult<bool>

Whether username is a known Lockbook account (local cache, then server).

Server lookup uses GetPublicKeyRequest. Auth is only a signed envelope — when signed out we probe with an ephemeral key so onboard can check availability without an account. UserNotFound maps to false.

Source

pub async fn reject_share(&self, id: &Uuid) -> Result<(), LbErr>

Source§

impl Lb

Source

pub async fn get_usage(&self) -> LbResult<UsageMetrics>

fetches data footprint on server along with data cap information compares this to local changes to estimate net data increase

callers of this function should be prepared to handle:

Source§

impl Lb

Source

pub async fn status(&self) -> Status

Source

pub async fn set_initial_state(&self) -> LbResult<()>

Source

pub async fn setup_status(&self) -> LbResult<()>

Source

pub async fn get_last_synced(&self) -> LbResult<i64>

Source

pub async fn get_last_synced_human(&self) -> LbResult<String>

Source

pub fn get_timestamp_human_string(&self, timestamp: i64) -> String

Source§

impl Lb

Source

pub async fn sync(&self) -> LbResult<()>

Outside iOS and WASM, returns AlreadySyncing if another instance is syncing this data directory.

Source§

impl Lb

Source

pub async fn init(config: Config) -> LbResult<Self>

Trait Implementations§

Source§

impl Clone for Lb

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Lb

§

impl !UnwindSafe for Lb

§

impl Freeze for Lb

§

impl Send for Lb

§

impl Sync for Lb

§

impl Unpin for Lb

§

impl UnsafeUnpin for Lb

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

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.

Source§

impl<T> Instrument for T

Source§

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

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

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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