Struct matrix_sdk_base::BaseClient

source ·
pub struct BaseClient {
    pub room_key_recipient_strategy: CollectStrategy,
    pub decryption_trust_requirement: TrustRequirement,
    /* private fields */
}
Expand description

A no IO Client implementation.

This Client is a state machine that receives responses and events and accordingly updates its state.

Fields§

§room_key_recipient_strategy: CollectStrategy

The strategy to use for picking recipient devices, when sending an encrypted message.

§decryption_trust_requirement: TrustRequirement

The trust requirement to use for decrypting events.

Implementations§

source§

impl BaseClient

source

pub fn with_store_config(config: StoreConfig) -> Self

Create a new client.

§Arguments
  • config - An optional session if the user already has one from a previous login call.
source

pub async fn clone_with_in_memory_state_store( &self, cross_process_store_locks_holder_name: &str, ) -> Result<Self>

Clones the current base client to use the same crypto store but a different, in-memory store config, and resets transient state.

source

pub fn session_meta(&self) -> Option<&SessionMeta>

Get the session meta information.

If the client is currently logged in, this will return a SessionMeta object which contains the user ID and device ID. Otherwise it returns None.

source

pub fn rooms(&self) -> Vec<Room>

Get all the rooms this client knows about.

source

pub fn rooms_filtered(&self, filter: RoomStateFilter) -> Vec<Room>

Get all the rooms this client knows about, filtered by room state.

source

pub fn rooms_stream( &self, ) -> (Vector<Room>, impl Stream<Item = Vec<VectorDiff<Room>>>)

Get a stream of all the rooms changes, in addition to the existing rooms.

source

pub fn get_or_create_room( &self, room_id: &RoomId, room_state: RoomState, ) -> Room

Lookup the Room for the given RoomId, or create one, if it didn’t exist yet in the store

source

pub fn store(&self) -> &DynStateStore

Get a reference to the store.

source

pub fn event_cache_store(&self) -> &EventCacheStoreLock

Get a reference to the event cache store.

source

pub fn logged_in(&self) -> bool

Is the client logged in.

source

pub async fn set_session_meta( &self, session_meta: SessionMeta, custom_account: Option<Account>, ) -> Result<()>

Set the meta of the session.

If encryption is enabled, this also initializes or restores the OlmMachine.

§Arguments
  • session_meta - The meta of a session that the user already has from a previous login call.

  • custom_account - A custom matrix_sdk_crypto::vodozemac::olm::Account to be used for the identity and one-time keys of this BaseClient. If no account is provided, a new default one or one from the store will be used. If an account is provided and one already exists in the store for this UserId/DeviceId combination, an error will be raised. This is useful if one wishes to create identity keys before knowing the user/device IDs, e.g., to use the identity key as the device ID.

This method panics if it is called twice.

source

pub async fn regenerate_olm( &self, custom_account: Option<Account>, ) -> Result<()>

Recreate an OlmMachine from scratch.

In particular, this will clear all its caches.

source

pub async fn sync_token(&self) -> Option<String>

Get the current, if any, sync token of the client. This will be None if the client didn’t sync at least once.

source

pub async fn room_knocked(&self, room_id: &RoomId) -> Result<Room>

User has knocked on a room.

Update the internal and cached state accordingly. Return the final Room.

source

pub async fn room_joined(&self, room_id: &RoomId) -> Result<Room>

User has joined a room.

Update the internal and cached state accordingly. Return the final Room.

source

pub async fn room_left(&self, room_id: &RoomId) -> Result<()>

User has left a room.

Update the internal and cached state accordingly.

source

pub fn sync_lock(&self) -> &Mutex<()>

Get access to the store’s sync lock.

source

pub async fn receive_sync_response( &self, response: Response, ) -> Result<SyncResponse>

Receive a response from a sync call.

§Arguments
  • response - The response that we received after a successful sync.
source

pub async fn receive_all_members( &self, room_id: &RoomId, request: &Request, response: &Response, ) -> Result<()>

Receive a get member events response and convert it to a deserialized MembersResponse

This client-server request must be made without filters to make sure all members are received. Otherwise, an error is returned.

§Arguments
  • room_id - The room id this response belongs to.

  • response - The raw response that was received from the server.

source

pub async fn receive_filter_upload( &self, filter_name: &str, response: &Response, ) -> Result<()>

Receive a successful filter upload response, the filter id will be stored under the given name in the store.

The filter id can later be retrieved with the get_filter method.

§Arguments
  • filter_name - The name that should be used to persist the filter id in the store.

  • response - The successful filter upload response containing the filter id.

source

pub async fn get_filter(&self, filter_name: &str) -> StoreResult<Option<String>>

Get the filter id of a previously uploaded filter.

Note: A filter will first need to be uploaded and persisted using receive_filter_upload.

§Arguments
  • filter_name - The name of the filter that was previously used to persist the filter.
source

pub async fn share_room_key( &self, room_id: &RoomId, ) -> Result<Vec<Arc<ToDeviceRequest>>>

Get a to-device request that will share a room key with users in a room.

source

pub fn get_room(&self, room_id: &RoomId) -> Option<Room>

Get the room with the given room id.

§Arguments
  • room_id - The id of the room that should be fetched.
source

pub async fn forget_room(&self, room_id: &RoomId) -> StoreResult<()>

Forget the room with the given room ID.

The room will be dropped from the room list and the store.

§Arguments
  • room_id - The id of the room that should be forgotten.
source

pub async fn olm_machine(&self) -> RwLockReadGuard<'_, Option<OlmMachine>>

Get the olm machine.

source

pub async fn get_push_room_context( &self, room: &Room, room_info: &RoomInfo, changes: &StateChanges, ) -> Result<Option<PushConditionRoomCtx>>

Get the push context for the given room.

Tries to get the data from changes or the up to date room_info. Loads the data from the store otherwise.

Returns None if some data couldn’t be found. This should only happen in brand new rooms, while we process its state.

source

pub fn update_push_room_context( &self, push_rules: &mut PushConditionRoomCtx, user_id: &UserId, room_info: &RoomInfo, changes: &StateChanges, )

Update the push context for the given room.

Updates the context data from changes or room_info.

source

pub fn subscribe_to_ignore_user_list_changes(&self) -> Subscriber<Vec<String>>

Returns a subscriber that publishes an event every time the ignore user list changes

source

pub fn room_info_notable_update_receiver( &self, ) -> Receiver<RoomInfoNotableUpdate>

Returns a new receiver that gets future room info notable updates.

Learn more by reading the RoomInfoNotableUpdate type.

source§

impl BaseClient

source

pub async fn process_sliding_sync_e2ee( &self, to_device: Option<&ToDevice>, e2ee: &E2EE, ) -> Result<Option<Vec<Raw<AnyToDeviceEvent>>>>

Processes the E2EE-related events from the Sliding Sync response.

In addition to writes to the crypto store, this may also write into the state store, in particular it may write latest-events to the state store.

Returns whether any change happened.

source

pub async fn process_sliding_sync<PEP: PreviousEventsProvider>( &self, response: &Response, previous_events_provider: &PEP, with_msc4186: bool, ) -> Result<SyncResponse>

Process a response from a sliding sync call.

§Arguments
  • response - The response that we received after a successful sliding sync.
  • previous_events_provider - Timeline events prior to the current sync.
  • with_msc4186 - Whether the response comes from simplified sliding sync (MSC4186) or sliding sync (MSC3575).

Trait Implementations§

source§

impl Clone for BaseClient

source§

fn clone(&self) -> BaseClient

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for BaseClient

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. 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§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

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

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

source§

const WITNESS: W = W::MAKE

A constant of the type witness
source§

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

§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
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> Same for T

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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>,

§

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

impl<T> AsyncTraitDeps for T

source§

impl<T> SendOutsideWasm for T
where T: Send,

source§

impl<T> SyncOutsideWasm for T
where T: Sync,