Skip to main content

GetOpts

Struct GetOpts 

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

What one GET may vary — everything RFC 05 §2.1 does not fix.

The §2.1 triple is not a knob and deliberately has no field here: it is applied by disciplined_get to every GET this crate issues. What a caller does choose is the timeout, the request body, an attachment riding beside it (#126), the query’s priority (RFC 04 §3, RFC 07 §2.6) and whether replies from outside the selector are accepted.

A spec struct rather than named sibling functions: fleet_get_at (priority) and fleet_get_call (attachment) used to be those siblings, and _at had come to mean two things — this axis, and the injected-clock convention (ingest_at, ZrecWriter::new_at). The greps the siblings bought survive as setter greps: “who issues bulk GETs?” is grep '\.priority(', “who sends attachments on queries?” is grep '\.attachment('.

Implementations§

Source§

impl GetOpts

Source

pub fn new(timeout: Duration) -> Self

A plain GET, bounded by timeout.

Priority::DEFAULT is Priority::Data — byte-identical to setting no priority at all, which is what every un-annotated GET did before this type existed.

Source

pub fn payload(self, payload: Option<Vec<u8>>) -> Self

The request body, when there is one. None is the common case and costs nothing to say.

Source

pub fn attachment(self, attachment: Option<Vec<u8>>) -> Self

A query attachment (#126), verbatim — never schema-encoded. The encode ladder is for bodies; an attachment is outside the registry’s vocabulary (#117), on a query exactly as on a publish.

Source

pub fn priority(self, priority: Priority) -> Self

State the query’s priority (RFC 04 §3, RFC 07 §2.6).

Replies inherit the query’s QoS — a server-side setter is a no-op — so a bulk plane’s priority can only be decided here. RFC 07 §2.6 makes that a caller obligation rather than a suggestion: @blob GETs MUST ride at Priority::DataLow, or one operator fetching a debug bundle starves the telemetry and alerts sharing the link.

Source

pub fn accept_any(self) -> Self

Accept replies on keys outside the selector (zenoh::query::ReplyKeyExpr::Any) — the querying-subscriber pattern.

The @adv cache replies with the cached sample on the sample’s own key, outside a <key>/@adv/** selector, and zenoh drops such replies unless the caller opts in. Harmless on a rung whose replies sit inside the selector anyway.

Source

pub fn timeout(&self) -> Duration

The bound this GET runs under.

Source

pub fn max_replies(self, max: usize) -> Self

Keep at most max replies (#339). Zero is clamped to one: a GET that kept nothing would report silence, and silence is never a verdict (RFC 05 §3.1).

Source

pub fn reply_bound(&self) -> usize

The reply bound in force.

Source

pub fn elided(&self) -> u64

What the bound cost: replies that arrived and were not kept, across every GET run under these options (RFC 13 §3 O6 — a bound that hides data must say so).

It rides here, on the object that states the bound, rather than in the return type, for the reason every other bounded structure in this crate keeps its own ledger (StatsTable::evicted, Retention::evicted, BoundedLru::admit): the thing that owns the ceiling owns the count of what the ceiling refused. A caller reads it beside the answers it just got:

let opts = GetOpts::new(timeout);
let answers = fleet_get(&fleet, key, &opts).await?;
if opts.elided() > 0 { /* say so — never render this as "all of them" */ }

The count is exact: past the bound the replies are still drained, they are simply not kept. Draining is what makes the number honest; keeping is what was unbounded.

Source

pub fn reset_elided(&self)

Forget what earlier GETs under these options cost — for a caller that reuses one GetOpts and reports per GET rather than per run.

Trait Implementations§

Source§

impl Clone for GetOpts

Source§

fn clone(&self) -> GetOpts

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for GetOpts

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<Source> AccessAs for Source

Source§

fn ref_as<T>(&self) -> <Source as IGuardRef<T>>::Guard<'_>
where Source: IGuardRef<T>, T: ?Sized,

Provides immutable access to a type as if it were its ABI-unstable equivalent.
Source§

fn mut_as<T>(&mut self) -> <Source as IGuardMut<T>>::GuardMut<'_>
where Source: IGuardMut<T>, T: ?Sized,

Provides mutable access to a type as if it were its ABI-unstable equivalent.
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> AsNode<T> for T

Source§

fn as_node(&self) -> &T

Source§

impl<T> AsNodeMut<T> for T

Source§

fn as_node_mut(&mut self) -> &mut T

Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, As> IGuardMut<As> for T
where T: Into<As>, As: Into<T>,

Source§

type GuardMut<'a> = MutAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary after applying its changes to the original.
Source§

fn guard_mut_inner(&mut self) -> <T as IGuardMut<As>>::GuardMut<'_>

Construct the temporary and guard it through a mutable reference.
Source§

impl<T, As> IGuardRef<As> for T
where T: Into<As>, As: Into<T>,

Source§

type Guard<'a> = RefAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary.
Source§

fn guard_ref_inner(&self) -> <T as IGuardRef<As>>::Guard<'_>

Construct the temporary and guard it through an immutable reference.
Source§

impl<T> Includes<End> for T

Source§

type Output = End

The result
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more