pub struct Probed {
pub candidate: NodeCandidate,
pub rtt_ms: f64,
pub total_bytes: Option<u64>,
pub coverage: Coverage,
}Expand description
A probed candidate that holds the blob, with its measured RTT.
Fields§
§candidate: NodeCandidateThe node that answered the probe with has_blob = true.
rtt_ms: f64Round-trip time measured by the probe, in milliseconds.
total_bytes: Option<u64>The blob size the node reported, when it knew it. Unsigned and
outside slash_sig (ADR 005 §cdn/probe/v1), so it is a hint: a fetch
takes it as its first size claim and grows or shrinks it as verified
bytes land ([crate::acquire]).
coverage: CoverageWhich discovery blocks this holder answered has_blob:true for
(decdn_protocol::coverage), taken from the probe’s ProbeResponseExt.
Unsigned and outside slash_sig: a hint for the scheduler’s segment
assignment, never a commitment. has_blob:true means
“will serve at least one block”, so this may be a proper subset of the
blob rather than the whole thing — a partial holder is admitted here
exactly like a full one; nothing in this module treats the two
differently. The requester-side has_blob/coverage.is_empty()
consistency check (ADR 013 §Tier 1, ProbeResponseExt::consistent_with)
runs before a Probed is ever constructed, so a malformed pairing never
reaches this field.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Probed
impl RefUnwindSafe for Probed
impl Send for Probed
impl Sync for Probed
impl Unpin for Probed
impl UnsafeUnpin for Probed
impl UnwindSafe for Probed
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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