pub struct RepeatingQuery { /* private fields */ }Expand description
A declared querier carrying the same RFC 05 §2.1 discipline as
fleet_get (target All, consolidation None, attribution by reply
key), for fetches that re-ask the same key expression — watch loops,
the schema cache’s re-asks, registry sweeps, doctor. Declaring once lets
the network keep routing state warm instead of rebuilding it per GET
(report §12’s zenoh-1.9 adoption row).
When to use which:
- recurring, same keyexpr → declare a
RepeatingQueryandfetchmany times (parameters and payload ride per get, never in the declared keyexpr — a?paramssuffix inkeyis a bug here); - genuinely one-shot, or an ad-hoc key →
fleet_get.
Liveliness sweeps (crate::bus::roster::roster()) are a different API
(session.liveliness().get()) with no querier equivalent and stay
undeclared.
Implementations§
Source§impl RepeatingQuery
impl RepeatingQuery
Sourcepub async fn fetch(&self) -> Result<Vec<FleetAnswer>>
pub async fn fetch(&self) -> Result<Vec<FleetAnswer>>
One fetch on the declared keyexpr, every reply attributed by its own
key — fleet_get’s contract, minus the per-call declaration.
Sourcepub async fn fetch_with(
&self,
params: &str,
payload: Option<Vec<u8>>,
) -> Result<Vec<FleetAnswer>>
pub async fn fetch_with( &self, params: &str, payload: Option<Vec<u8>>, ) -> Result<Vec<FleetAnswer>>
As fetch, with selector parameters and/or a request
payload riding this one get.
Sourcepub fn max_replies(self, max: usize) -> Self
pub fn max_replies(self, max: usize) -> Self
Keep at most max replies per fetch (#339). Zero is clamped to one.
Sourcepub fn reply_bound(&self) -> usize
pub fn reply_bound(&self) -> usize
The reply bound in force.
Sourcepub fn elided(&self) -> u64
pub fn elided(&self) -> u64
Replies this querier’s bound refused, across every fetch (RFC 13 §3
O6). See GetOpts::elided for why the count lives with the bound.
Sourcepub fn reset_elided(&self)
pub fn reset_elided(&self)
Forget what earlier fetches through this querier cost — for a caller
that re-runs a sweep and reports per sweep rather than per querier
(GetOpts::reset_elided is the same call on the one-shot path).
Without it a per-sweep figure has to be read as a before/after subtraction, which is not safe when two sweeps overlap on one declared querier.
Sourcepub async fn fetch_timed(&self) -> Result<Vec<(FleetAnswer, Duration)>>
pub async fn fetch_timed(&self) -> Result<Vec<(FleetAnswer, Duration)>>
As fetch, stamping each reply with how long after the
GET it arrived (issue #52).
This exists because a fan-out call’s call duration is the time until the slowest answer, so attributing it to every origin would report a fast responder’s latency as the fleet’s worst. Timing each reply where it is drained is the only place the distinction is available — and it keeps the RFC 05 §2.1 chokepoint intact rather than forking a second GET path to measure with.
Sourcepub async fn undeclare(self) -> Result<()>
pub async fn undeclare(self) -> Result<()>
Undeclare, telling the network to drop the routing state. The crate’s
idiom: teardown is explicit and awaited, never left to Drop.
Sourcepub async fn matching_status(&self) -> Result<bool>
pub async fn matching_status(&self) -> Result<bool>
Whether any queryable currently matches this querier — “someone
serves what we ask”, a routing fact about the querier this process
declared (RFC 12 §9’s allowed half). false is not a fleet verdict:
it never means “nobody serves this key” (RFC 05 §3.1).
Sourcepub async fn matching_events(&self) -> Result<MatchingEvents>
pub async fn matching_events(&self) -> Result<MatchingEvents>
Event-driven matching changes for this querier — same honesty bounds
as matching_status.
Auto Trait Implementations§
impl !Freeze for RepeatingQuery
impl !RefUnwindSafe for RepeatingQuery
impl !UnwindSafe for RepeatingQuery
impl Send for RepeatingQuery
impl Sync for RepeatingQuery
impl Unpin for RepeatingQuery
impl UnsafeUnpin for RepeatingQuery
Blanket Implementations§
Source§impl<Source> AccessAs for Source
impl<Source> AccessAs for Source
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