pub struct SlidingSync { /* private fields */ }
Available on crate feature experimental-sliding-sync only.
Expand description

The Sliding Sync instance.

It is OK to clone this type as much as you need: cloning it is cheap.

Implementations§

source§

impl SlidingSync

source

pub fn builder(id: String, client: Client) -> Result<SlidingSyncBuilder, Error>

Create a new SlidingSyncBuilder.

source

pub fn subscribe_to_room( &self, room_id: OwnedRoomId, settings: Option<RoomSubscription> )

Subscribe to a given room.

If the associated Room exists, it will be marked as members are missing, so that it ensures to re-fetch all members.

source

pub fn unsubscribe_from_room(&self, room_id: OwnedRoomId)

Unsubscribe from a given room.

source

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

Lookup a specific room

source

pub fn get_number_of_rooms(&self) -> usize

Check the number of rooms.

source

pub async fn on_list<Function, FunctionOutput, R>( &self, list_name: &str, function: Function ) -> Option<R>
where Function: FnOnce(&SlidingSyncList) -> FunctionOutput, FunctionOutput: Future<Output = R>,

Find a list by its name, and do something on it if it exists.

source

pub async fn add_list( &self, list_builder: SlidingSyncListBuilder ) -> Result<Option<SlidingSyncList>>

Add the list to the list of lists.

As lists need to have a unique .name, if a list with the same name is found the new list will replace the old one and the return it or None.

source

pub async fn add_cached_list( &self, list_builder: SlidingSyncListBuilder ) -> Result<Option<SlidingSyncList>>

Add a list that will be cached and reloaded from the cache.

This will raise an error if a storage key was not set, or if there was a I/O error reading from the cache.

The rest of the semantics is the same as Self::add_list.

source

pub async fn get_rooms<I: Iterator<Item = OwnedRoomId>>( &self, room_ids: I ) -> Vec<Option<SlidingSyncRoom>>

Lookup a set of rooms

source

pub async fn get_all_rooms(&self) -> Vec<SlidingSyncRoom>

Get all rooms.

source

pub fn sync(&self) -> impl Stream<Item = Result<UpdateSummary, Error>> + '_

Create a new Sliding Sync sync loop.

This method returns a Stream, which will send requests and will handle responses automatically. Lists and rooms are updated automatically.

This function returns Ok(…) if everything went well, otherwise it will return Err(…). An Err will always lead to the Stream termination.

source

pub fn stop_sync(&self) -> Result<()>

Force to stop the sync loop (Self::sync) if it’s running.

Usually, dropping the Stream returned by Self::sync should be enough to “stop” it, but depending of how this Stream is used, it might not be obvious to drop it immediately (thinking of using this API over FFI; the foreign-language might not be able to drop a value immediately). Thus, calling this method will ensure that the sync loop stops gracefully and as soon as it returns.

Trait Implementations§

source§

impl Clone for SlidingSync

source§

fn clone(&self) -> SlidingSync

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 SlidingSync

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,