Struct matrix_sdk::encryption::backups::Backups
source · pub struct Backups { /* private fields */ }
e2e-encryption
only.Expand description
The backups manager for the Client
.
Implementations§
source§impl Backups
impl Backups
sourcepub async fn create(&self) -> Result<(), Error>
pub async fn create(&self) -> Result<(), Error>
Create a new backup version, encrypted with a new backup recovery key.
The backup recovery key will be persisted locally and shared with
trusted devices as m.secret.send
to-device messages.
After the backup has been created, all room keys will be uploaded to the homeserver.
Warning: This will overwrite any existing backup.
§Examples
let backups = client.encryption().backups();
backups.create().await?;
assert_eq!(backups.state(), BackupState::Enabled);
sourcepub async fn disable(&self) -> Result<(), Error>
pub async fn disable(&self) -> Result<(), Error>
Disable and delete the currently active backup.
§Examples
let backups = client.encryption().backups();
backups.disable().await?;
assert_eq!(backups.state(), BackupState::Unknown);
sourcepub fn wait_for_steady_state(&self) -> WaitForSteadyState<'_>
pub fn wait_for_steady_state(&self) -> WaitForSteadyState<'_>
Returns a future to wait for room keys to be uploaded.
Awaiting the future will wake up a task to upload room keys which have not yet been uploaded to the homeserver. It will then wait for the task to finish uploading.
§Examples
use futures_util::StreamExt;
let backups = client.encryption().backups();
let wait_for_steady_state = backups.wait_for_steady_state();
let mut progress_stream = wait_for_steady_state.subscribe_to_progress();
tokio::spawn(async move {
while let Some(update) = progress_stream.next().await {
let Ok(update) = update else { break };
match update {
UploadState::Uploading(counts) => {
println!(
"Uploaded {} out of {} room keys.",
counts.backed_up, counts.total
);
}
UploadState::Error => break,
UploadState::Done => break,
_ => (),
}
}
});
wait_for_steady_state.await?;
sourcepub fn state_stream(
&self
) -> impl Stream<Item = Result<BackupState, BroadcastStreamRecvError>>
pub fn state_stream( &self ) -> impl Stream<Item = Result<BackupState, BroadcastStreamRecvError>>
Get a stream of updates to the BackupState
.
This method will send out the current state as the first update.
§Examples
use futures_util::StreamExt;
let backups = client.encryption().backups();
let mut state_stream = backups.state_stream();
while let Some(update) = state_stream.next().await {
let Ok(update) = update else { break };
match update {
BackupState::Enabled => {
println!("Backups have been enabled");
}
_ => (),
}
}
sourcepub fn state(&self) -> BackupState
pub fn state(&self) -> BackupState
Get the current BackupState
for this Client
.
sourcepub async fn are_enabled(&self) -> bool
pub async fn are_enabled(&self) -> bool
Are backups enabled for the current Client
?
This method will check if we locally have an active backup key and backup version and are ready to upload room keys to a backup.
sourcepub async fn exists_on_server(&self) -> Result<bool, Error>
pub async fn exists_on_server(&self) -> Result<bool, Error>
Does a backup exist on the server?
This method will request info about the current backup from the
homeserver and if a backup exits return true
, otherwise false
.
sourcepub fn room_keys_for_room_stream(
&self,
room_id: &RoomId
) -> impl Stream<Item = Result<BTreeMap<String, BTreeSet<String>>, BroadcastStreamRecvError>>
pub fn room_keys_for_room_stream( &self, room_id: &RoomId ) -> impl Stream<Item = Result<BTreeMap<String, BTreeSet<String>>, BroadcastStreamRecvError>>
Subscribe to a stream that notifies when a room key for the specified room is downloaded from the key backup.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Backups
impl Send for Backups
impl Sync for Backups
impl Unpin for Backups
impl !UnwindSafe for Backups
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
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
§fn new_handle(value: Arc<T>) -> Handle
fn new_handle(value: Arc<T>) -> Handle
§fn clone_handle(handle: Handle) -> Handle
fn clone_handle(handle: Handle) -> Handle
§fn consume_handle(handle: Handle) -> Arc<T>
fn consume_handle(handle: Handle) -> Arc<T>
Arc<>