pub struct State {Show 28 fields
pub started: Option<Instant>,
pub total: u64,
pub bypassed: u64,
pub blocked: u64,
pub errors: u64,
pub padded: u64,
pub latency_sum_ms: u64,
pub latency_samples: VecDeque<u64>,
pub status_buckets: [u64; 6],
pub hosts: HashMap<String, HostStats>,
pub tls: TlsStats,
pub recent: VecDeque<RequestRecord>,
pub selected: Option<usize>,
pub inspect: bool,
pub detail_scroll: u16,
pub tab: Tab,
pub spark: VecDeque<SecBucket>,
pub spark_current_sec: u64,
pub waf_seen: HashMap<String, u64>,
pub attempts_sum: u64,
pub tech_stats: HashMap<String, TechStats>,
pub outcome_filter: OutcomeFilter,
pub input_mode: InputMode,
pub filter_query: String,
pub follow: bool,
pub toast: Option<Toast>,
pub yank_seq: u64,
pub intercept_selected: Option<u64>,
}Fields§
§started: Option<Instant>§total: u64§bypassed: u64§blocked: u64§errors: u64§padded: u64§latency_sum_ms: u64§latency_samples: VecDeque<u64>§status_buckets: [u64; 6]§hosts: HashMap<String, HostStats>§tls: TlsStats§recent: VecDeque<RequestRecord>§selected: Option<usize>Index INTO recent for the Flow tab. None means “no
explicit selection — auto-follow newest at the bottom”.
inspect: boolWhether the inspect/detail pane is open in Flow tab.
detail_scroll: u16Vertical scroll offset within the open detail pane.
tab: TabCurrently focused tab.
spark: VecDeque<SecBucket>§spark_current_sec: u64§waf_seen: HashMap<String, u64>§attempts_sum: u64§tech_stats: HashMap<String, TechStats>Per-technique tried/bypassed counts; drives the Techniques tab.
outcome_filter: OutcomeFilterOutcome filter chip state.
input_mode: InputModeNormal for command keys, FilterEdit while typing a query.
filter_query: StringActive substring filter query (case-insensitive, host+path).
follow: boolAuto-stick to newest record on every event when true.
toast: Option<Toast>Ephemeral header banner (e.g. “yanked → /tmp/…”).
yank_seq: u64Monotonic counter for /tmp/wafrift-yank-N.curl filenames.
intercept_selected: Option<u64>Index INTO the latest intercept::global_store().snapshot()
for the Intercept tab. Recomputed each render — selection
survives across snapshots when possible.
Implementations§
Source§impl State
impl State
pub fn new() -> Self
pub fn record(&mut self, ev: &Event)
pub fn uptime(&self) -> Duration
pub fn avg_latency_ms(&self) -> u64
Sourcepub fn latency_percentile(&self, p: f64) -> u64
pub fn latency_percentile(&self, p: f64) -> u64
Compute a percentile (e.g. 0.95) from the latency-sample ring.
Returns 0 when the ring is empty. Sorts a copy on every call —
fine at dashboard refresh rate (≤7 Hz) for a 1024-entry ring.
pub fn bypass_rate_pct(&self) -> f64
pub fn rps_recent(&self) -> f64
pub fn top_hosts(&self, n: usize) -> Vec<(&String, &HostStats)>
Sourcepub fn visible_indices(&self) -> Vec<usize>
pub fn visible_indices(&self) -> Vec<usize>
Return the indices of recent that pass the active filter
query and outcome filter, in chronological order.
Sourcepub fn select_offset(&mut self, delta: i64)
pub fn select_offset(&mut self, delta: i64)
Move the selection by delta rows within the visible list
(filter-aware). Selection is stored as an index into recent
so external code (detail pane, yank) can deref directly.
pub fn select_first(&mut self)
pub fn select_last(&mut self)
pub fn toggle_follow(&mut self)
pub fn cycle_outcome_filter(&mut self)
pub fn enter_filter_edit(&mut self)
pub fn cancel_filter_edit(&mut self)
pub fn commit_filter_edit(&mut self)
pub fn filter_push(&mut self, c: char)
pub fn filter_backspace(&mut self)
pub fn set_toast(&mut self, msg: impl Into<String>, kind: ToastKind)
Sourcepub fn tick_toast(&mut self)
pub fn tick_toast(&mut self)
Drop the toast if it’s expired. Called every redraw tick.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for State
impl RefUnwindSafe for State
impl Send for State
impl Sync for State
impl Unpin for State
impl UnsafeUnpin for State
impl UnwindSafe for State
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more