pub struct Backups { /* private fields */ }
Available on crate feature e2e-encryption only.
Expand description

The backups manager for the Client.

Implementations§

source§

impl Backups

source

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);
source

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);
source

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?;
source

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");
        }
        _ => (),
    }
}
source

pub fn state(&self) -> BackupState

Get the current BackupState for this Client.

source

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.

source

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.

source

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.

source

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

Download all room keys for a certain room from the server-side key backup.

source

pub async fn download_room_key( &self, room_id: &RoomId, session_id: &str ) -> Result<(), Error>

Download a single room key from the server-side key backup.

Trait Implementations§

source§

impl Clone for Backups

source§

fn clone(&self) -> Backups

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 Backups

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
§

impl<T> CompatExt for T

§

fn compat(self) -> Compat<T>

Applies the [Compat] adapter by value. Read more
§

fn compat_ref(&self) -> Compat<&T>

Applies the [Compat] adapter by shared reference. Read more
§

fn compat_mut(&mut self) -> Compat<&mut T>

Applies the [Compat] adapter by mutable reference. Read more
source§

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

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T, UT> HandleAlloc<UT> for T
where T: Send + Sync,

§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
§

fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
§

fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<>
§

fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
§

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

§

const WITNESS: W = W::MAKE

A constant of the type witness
§

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

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.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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.
§

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

§

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> Any for T
where T: Any,

source§

impl<T> AsyncTraitDeps for T

source§

impl<T> CloneAny for T
where T: Any + Clone,

source§

impl<T> CloneAnySend for T
where T: Any + Send + Clone,

source§

impl<T> CloneAnySendSync for T
where T: Any + Send + Sync + Clone,

source§

impl<T> CloneAnySync for T
where T: Any + Sync + Clone,

source§

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

source§

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