/// Advances the domain to the current domain frontier, thus
/// allowing traces to compact. All domain input handles are
/// forwarded up to the frontier, so as not to stall progress.
Advances the domain to the current domain frontier, thus
allowing traces to compact. All domain input handles are
forwarded up to the frontier, so as not to stall progress.
Advances the domain to the current domain frontier thus allowing traces to compact . All domain input handles are forwarded up to the frontier so as not to stall progress .
pub fn advance(&mut self) -> Result<(), Error> {
        if self.probed_source_count() == 0 {
            // No sources registered.
            self.advance_traces(&[self.epoch().clone()])
        } else {
            let frontier = self
                .domain_probe
                .with_frontier(|frontier| (*frontier).to_vec());
            if frontier.is_empty() {
                // Even if all sources dropped their capabilities we
                // still want to advance all traces to the current
                // epoch, s.t. user created attributes are
                // continuously advanced and compacted.
                self.advance_traces(&[self.epoch().clone()])
            } else {
                if !AntichainRef::new(&frontier).less_equal(self.epoch()) {
                    // Input handles have fallen behind the sources and need
                    // to be advanced, such as not to block progress.
                    let max = frontier.iter().max().unwrap().clone();
                    self.advance_epoch(max)?;
                }
                self.advance_traces(&frontier)
            }
        }
    }
pub fn advance ( & mut self ) -> Result < ( ) , Error > { if self . probed_source_count ( ) == 0 { // No sources registered. self . advance_traces ( & [ self . epoch ( ) . clone ( ) ] ) } else { let frontier = self . domain_probe . with_frontier ( | frontier | ( * frontier ) . to_vec ( ) ) ; if frontier . is_empty ( ) { // Even if all sources dropped their capabilities we // still want to advance all traces to the current // epoch, s.t. user created attributes are // continuously advanced and compacted. self . advance_traces ( & [ self . epoch ( ) . clone ( ) ] ) } else { if ! AntichainRef :: new ( & frontier ) . less_equal ( self . epoch ( ) ) { // Input handles have fallen behind the sources and need // to be advanced, such as not to block progress. let max = frontier . iter ( ) . max ( ) . unwrap ( ) . clone ( ) ; self . advance_epoch ( max ) ? ; } self . advance_traces ( & frontier ) } } }
Advances the domain to the current domain frontier, thus
allowing traces to compact.
Advances the domain to the current domain frontier thus allowing traces to compact .
&mut self