pub struct DhtRegistrationPublisher { /* private fields */ }Expand description
Common publisher for DHT-backed registries.
Implementations§
Source§impl DhtRegistrationPublisher
impl DhtRegistrationPublisher
Sourcepub async fn publish(
&self,
context: &RegistrationContext<'_>,
value: Encoded,
) -> Result<()>
pub async fn publish( &self, context: &RegistrationContext<'_>, value: Encoded, ) -> Result<()>
Publish value, tombstoning older values previously published by this publisher.
Sourcepub async fn publish_many(
&self,
context: &RegistrationContext<'_>,
values: impl IntoIterator<Item = Encoded>,
) -> Result<()>
pub async fn publish_many( &self, context: &RegistrationContext<'_>, values: impl IntoIterator<Item = Encoded>, ) -> Result<()>
Publish the current value set, tombstoning older values previously published by this publisher.
Invariant: after a successful call, DHT data previously emitted by this publisher is exactly
values. Preservation: every stale local value is tombstoned after every current value is
touched under the same publisher serialization lock.
Sourcepub async fn publish_many_replacing(
&self,
context: &RegistrationContext<'_>,
values: impl IntoIterator<Item = Encoded>,
replaces_observed_value: impl Fn(&Encoded) -> bool,
) -> Result<()>
pub async fn publish_many_replacing( &self, context: &RegistrationContext<'_>, values: impl IntoIterator<Item = Encoded>, replaces_observed_value: impl Fn(&Encoded) -> bool, ) -> Result<()>
Publish the current value set, tombstoning older observed values with the same registry key.
Invariant: registry topics are keyed presence sets, not append-only heartbeat logs. Preservation: every observed value replaced by the current publish is tombstoned after the replacement value has been touched, while unrelated publisher keys stay joinable.
Sourcepub async fn publish_many_replacing_and_compacting(
&self,
context: &RegistrationContext<'_>,
values: impl IntoIterator<Item = Encoded>,
replaces_observed_value: impl Fn(&Encoded) -> bool,
preserves_observed_value: impl Fn(&Encoded) -> bool,
) -> Result<()>
pub async fn publish_many_replacing_and_compacting( &self, context: &RegistrationContext<'_>, values: impl IntoIterator<Item = Encoded>, replaces_observed_value: impl Fn(&Encoded) -> bool, preserves_observed_value: impl Fn(&Encoded) -> bool, ) -> Result<()>
Publish values, tombstone stale observed registry values, and compact at the owner.
This never sends a replacement value set computed from an observed client snapshot. Compaction is requested with only the removable payloads, so the storage owner computes the final live set from its current local entry and preserves concurrent live writes.
Trait Implementations§
Source§impl Clone for DhtRegistrationPublisher
impl Clone for DhtRegistrationPublisher
Source§fn clone(&self) -> DhtRegistrationPublisher
fn clone(&self) -> DhtRegistrationPublisher
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for DhtRegistrationPublisher
impl !UnwindSafe for DhtRegistrationPublisher
impl Freeze for DhtRegistrationPublisher
impl Send for DhtRegistrationPublisher
impl Sync for DhtRegistrationPublisher
impl Unpin for DhtRegistrationPublisher
impl UnsafeUnpin for DhtRegistrationPublisher
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
impl<T> MaybeSend for T
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.