Struct timely::progress::reachability::Tracker

source ·
pub struct Tracker<T: Timestamp> { /* private fields */ }
Expand description

An interactive tracker of propagated reachability information.

A Tracker tracks, for a fixed graph topology, the implications of pointstamp changes at various node input and output ports. These changes may alter the potential pointstamps that could arrive at downstream input ports.

Implementations§

source§

impl<T: Timestamp> Tracker<T>

source

pub fn update(&mut self, location: Location, time: T, value: i64)

Updates the count for a time at a location.

source

pub fn update_target(&mut self, target: Target, time: T, value: i64)

Updates the count for a time at a target (operator input, scope output).

source

pub fn update_source(&mut self, source: Source, time: T, value: i64)

Updates the count for a time at a source (operator output, scope input).

source

pub fn tracking_anything(&mut self) -> bool

Indicates if any pointstamps have positive count.

source

pub fn allocate_from( builder: Builder<T>, logger: Option<TrackerLogger>, ) -> (Self, Vec<Vec<Antichain<T::Summary>>>)

Allocate a new Tracker using the shape from summaries.

The result is a pair of tracker, and the summaries from each input port to each output port.

If the optional logger is provided, it will be used to log various tracker events.

source

pub fn propagate_all(&mut self)

Propagates all pending updates.

The method drains self.input_changes and circulates their implications until we cease deriving new implications.

source

pub fn pushed_output(&mut self) -> &mut [ChangeBatch<T>]

Implications of maintained capabilities projected to each output.

source

pub fn pushed(&mut self) -> &mut ChangeBatch<(Location, T)>

A mutable reference to the pushed results of changes.

source

pub fn node_state(&self, index: usize) -> &PerOperator<T>

Reveals per-operator frontier state.

source

pub fn is_global(&self, location: Location, time: &T) -> bool

Indicates if pointstamp is in the scope-wide frontier.

Such a pointstamp would, if removed from self.pointstamps, cause a change to self.implications, which is what we track for per operator input frontiers. If the above do not hold, then its removal either 1. shouldn’t be possible, or 2. will not affect the output of self.implications.

Trait Implementations§

source§

impl<T: Timestamp> Drop for Tracker<T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Tracker<T>
where T: Freeze,

§

impl<T> !RefUnwindSafe for Tracker<T>

§

impl<T> !Send for Tracker<T>

§

impl<T> !Sync for Tracker<T>

§

impl<T> Unpin for Tracker<T>
where T: Unpin, <T as Timestamp>::Summary: Unpin,

§

impl<T> !UnwindSafe for Tracker<T>

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> CopyAs<T> for T

source§

fn copy_as(self) -> T

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