pub struct SyncService { /* private fields */ }
Expand description
A high level manager for your Matrix syncing needs.
The SyncService
is responsible for managing real-time synchronization
with a Matrix server. It can initiate and maintain the necessary
synchronization tasks for you.
Note: The SyncService
requires a server with support for MSC4186,
otherwise it will fail with an 404 M_UNRECOGNIZED
request error.
§Example
use matrix_sdk::Client;
use matrix_sdk_ui::sync_service::{State, SyncService};
let homeserver = Url::parse("http://example.com")?;
let client = Client::new(homeserver).await?;
client
.matrix_auth()
.login_username("example", "wordpass")
.initial_device_display_name("My bot")
.await?;
let sync_service = SyncService::builder(client).build().await?;
let mut state = sync_service.state();
while let Some(state) = state.next().await {
match state {
State::Idle => eprintln!("The sync service is idle."),
State::Running => eprintln!("The sync has started to run."),
State::Offline => eprintln!(
"We have entered the offline mode, the server seems to be
unavailable"
),
State::Terminated => {
eprintln!("The sync service has been gracefully terminated");
break;
}
State::Error => {
eprintln!("The sync service has run into an error");
break;
}
}
}
Implementations§
Source§impl SyncService
impl SyncService
Sourcepub fn builder(client: Client) -> SyncServiceBuilder
pub fn builder(client: Client) -> SyncServiceBuilder
Create a new builder for configuring an SyncService
.
Sourcepub fn room_list_service(&self) -> Arc<RoomListService>
pub fn room_list_service(&self) -> Arc<RoomListService>
Get the underlying RoomListService
instance for easier access to its
methods.
Sourcepub async fn start(&self)
pub async fn start(&self)
Start (or restart) the underlying sliding syncs.
This can be called multiple times safely:
- if the stream is still properly running, it won’t be restarted.
- if the
SyncService
is in the offline mode we will exit the offline mode and immediately attempt to sync again. - if the stream has been aborted before, it will be properly cleaned up and restarted.
Sourcepub async fn stop(&self)
pub async fn stop(&self)
Stop the underlying sliding syncs.
This must be called when the app goes into the background. It’s better to call this API when the application exits, although not strictly necessary.
Sourcepub fn try_get_encryption_sync_permit(
&self,
) -> Option<OwnedMutexGuard<EncryptionSyncPermit>>
pub fn try_get_encryption_sync_permit( &self, ) -> Option<OwnedMutexGuard<EncryptionSyncPermit>>
Attempt to get a permit to use an EncryptionSyncService
at a given
time.
This ensures there is at most one EncryptionSyncService
active at
any time, per application.
Auto Trait Implementations§
impl Freeze for SyncService
impl !RefUnwindSafe for SyncService
impl Send for SyncService
impl Sync for SyncService
impl Unpin for SyncService
impl !UnwindSafe for SyncService
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
§impl<T> CompatExt for T
impl<T> CompatExt for T
Source§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
Source§fn consume_handle(handle: Handle) -> Arc<T>
fn consume_handle(handle: Handle) -> Arc<T>
Arc<>
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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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