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
impl BaseClient
Sourcepub fn with_store_config(config: StoreConfig) -> Self
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.
Sourcepub async fn clone_with_in_memory_state_store(
&self,
cross_process_store_locks_holder_name: &str,
) -> Result<Self>
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.
Sourcepub fn session_meta(&self) -> Option<&SessionMeta>
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
.
Sourcepub fn rooms_filtered(&self, filter: RoomStateFilter) -> Vec<Room>
pub fn rooms_filtered(&self, filter: RoomStateFilter) -> Vec<Room>
Get all the rooms this client knows about, filtered by room state.
Sourcepub fn rooms_stream(
&self,
) -> (Vector<Room>, impl Stream<Item = Vec<VectorDiff<Room>>>)
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.
Sourcepub fn get_or_create_room(
&self,
room_id: &RoomId,
room_state: RoomState,
) -> Room
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
Sourcepub fn store(&self) -> &DynStateStore
pub fn store(&self) -> &DynStateStore
Get a reference to the store.
Sourcepub fn event_cache_store(&self) -> &EventCacheStoreLock
pub fn event_cache_store(&self) -> &EventCacheStoreLock
Get a reference to the event cache store.
Sourcepub async fn set_session_meta(
&self,
session_meta: SessionMeta,
custom_account: Option<Account>,
) -> Result<()>
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 custommatrix_sdk_crypto::vodozemac::olm::Account
to be used for the identity and one-time keys of thisBaseClient
. 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 thisUserId
/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.
Sourcepub async fn regenerate_olm(
&self,
custom_account: Option<Account>,
) -> Result<()>
pub async fn regenerate_olm( &self, custom_account: Option<Account>, ) -> Result<()>
Recreate an OlmMachine
from scratch.
In particular, this will clear all its caches.
Sourcepub async fn sync_token(&self) -> Option<String>
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.
Sourcepub async fn room_knocked(&self, room_id: &RoomId) -> Result<Room>
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.
Sourcepub async fn room_joined(&self, room_id: &RoomId) -> Result<Room>
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.
Sourcepub async fn room_left(&self, room_id: &RoomId) -> Result<()>
pub async fn room_left(&self, room_id: &RoomId) -> Result<()>
User has left a room.
Update the internal and cached state accordingly.
Sourcepub async fn receive_sync_response(
&self,
response: Response,
) -> Result<SyncResponse>
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.
Sourcepub async fn receive_all_members(
&self,
room_id: &RoomId,
request: &Request,
response: &Response,
) -> Result<()>
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.
Sourcepub async fn receive_filter_upload(
&self,
filter_name: &str,
response: &Response,
) -> Result<()>
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.
Sourcepub async fn get_filter(&self, filter_name: &str) -> StoreResult<Option<String>>
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.
Get a to-device request that will share a room key with users in a room.
Sourcepub fn get_room(&self, room_id: &RoomId) -> Option<Room>
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.
Sourcepub async fn forget_room(&self, room_id: &RoomId) -> StoreResult<()>
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.
Sourcepub async fn olm_machine(&self) -> RwLockReadGuard<'_, Option<OlmMachine>>
pub async fn olm_machine(&self) -> RwLockReadGuard<'_, Option<OlmMachine>>
Get the olm machine.
Sourcepub async fn get_push_room_context(
&self,
room: &Room,
room_info: &RoomInfo,
changes: &StateChanges,
) -> Result<Option<PushConditionRoomCtx>>
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.
Sourcepub fn update_push_room_context(
&self,
push_rules: &mut PushConditionRoomCtx,
user_id: &UserId,
room_info: &RoomInfo,
changes: &StateChanges,
)
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
.
Sourcepub fn subscribe_to_ignore_user_list_changes(&self) -> Subscriber<Vec<String>>
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
Sourcepub fn room_info_notable_update_receiver(
&self,
) -> Receiver<RoomInfoNotableUpdate>
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
impl BaseClient
Sourcepub async fn process_sliding_sync_e2ee(
&self,
to_device: Option<&ToDevice>,
e2ee: &E2EE,
) -> Result<Option<Vec<Raw<AnyToDeviceEvent>>>>
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.
Sourcepub async fn process_sliding_sync<PEP: PreviousEventsProvider>(
&self,
response: &Response,
previous_events_provider: &PEP,
with_msc4186: bool,
) -> Result<SyncResponse>
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 theresponse
comes from simplified sliding sync (MSC4186) or sliding sync (MSC3575).
Trait Implementations§
Source§impl Clone for BaseClient
impl Clone for BaseClient
Source§fn clone(&self) -> BaseClient
fn clone(&self) -> BaseClient
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl Freeze for BaseClient
impl !RefUnwindSafe for BaseClient
impl Send for BaseClient
impl Sync for BaseClient
impl Unpin for BaseClient
impl !UnwindSafe for BaseClient
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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