Skip to main content

GraphSubscriber

Struct GraphSubscriber 

Source
pub struct GraphSubscriber { /* private fields */ }
Expand description

Async helper that pairs a SharedGraph with a broadcast receiver to yield batches of GraphDiff entries whenever the graph changes.

§Example

let subscriber = GraphSubscriber::new(graph.clone());
loop {
    match subscriber.next_batch().await {
        Ok(diffs) => { /* process diffs */ }
        Err(gap) => { /* full resync needed */ }
    }
}

Implementations§

Source§

impl GraphSubscriber

Source

pub fn new(graph: SharedGraph) -> Self

Create a new subscriber starting from the graph’s current version.

Source

pub fn from_version(graph: SharedGraph, version: u64) -> Self

Create a subscriber starting from a specific version.

Useful for resuming after a reconnect.

Source

pub async fn next_batch(&mut self) -> Result<Vec<GraphDiff>, ChangelogGap>

Wait for the next batch of changes and return them.

Blocks (async) until at least one write occurs, then returns all diffs since the last consumed version. Returns Err(ChangelogGap) if the subscriber has fallen too far behind.

Source

pub fn version(&self) -> u64

The last version this subscriber has consumed.

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
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

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>,

Source§

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.