Skip to main content

GossipSubManager

Struct GossipSubManager 

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

GossipSub manager

Implementations§

Source§

impl GossipSubManager

Source

pub fn new(config: GossipSubConfig) -> Self

Create a new GossipSub manager

Source

pub fn subscribe(&self, topic: TopicId) -> Result<(), GossipSubError>

Subscribe to a topic

Source

pub fn unsubscribe(&self, topic: &TopicId) -> Result<(), GossipSubError>

Unsubscribe from a topic

Source

pub fn publish( &self, topic: TopicId, data: Vec<u8>, source: PeerId, ) -> Result<MessageId, GossipSubError>

Publish a message to a topic

Source

pub fn handle_message( &self, message: GossipSubMessage, ) -> Result<bool, GossipSubError>

Handle received message

Source

pub fn add_peer_to_mesh( &self, topic: &TopicId, peer: PeerId, ) -> Result<(), GossipSubError>

Add peer to topic mesh

Source

pub fn remove_peer_from_mesh( &self, topic: &TopicId, peer: &PeerId, ) -> Result<(), GossipSubError>

Remove peer from topic mesh

Source

pub fn get_mesh_peers( &self, topic: &TopicId, ) -> Result<Vec<PeerId>, GossipSubError>

Get peers in topic mesh

Source

pub fn get_peer_score(&self, peer: &PeerId) -> Option<PeerScore>

Get peer score

Source

pub fn update_peer_score(&self, peer: &PeerId, topic: TopicId, score: f64)

Update peer score for a topic

Source

pub fn get_peers_to_prune(&self, topic: &TopicId, threshold: f64) -> Vec<PeerId>

Get low-scoring peers that should be pruned

Source

pub fn stats(&self) -> GossipSubStats

Get statistics

Source

pub fn list_topics(&self) -> Vec<TopicId>

List subscribed topics

Source

pub fn is_subscribed(&self, topic: &TopicId) -> bool

Check if subscribed to a topic

Source§

impl GossipSubManager

Source

pub fn subscribe_inference_topics(&self) -> Result<(), GossipSubError>

Subscribe to all standard IPFRS inference topics

Source

pub fn publish_inference_request( &self, request_bytes: &[u8], sender_peer_id: &str, ) -> Result<(), GossipSubError>

Publish an inference request to all subscribers

Source

pub fn publish_inference_result( &self, result_bytes: &[u8], sender_peer_id: &str, ) -> Result<(), GossipSubError>

Publish an inference result to subscribers

Source

pub fn announce_block( &self, cid: &str, sender_peer_id: &str, ) -> Result<(), GossipSubError>

Publish a block availability announcement

Source

pub fn publish_gradient_cid( &self, cid: &str, sender_peer_id: &str, ) -> Result<(), GossipSubError>

Publish a gradient CID to the GRADIENT_SYNC topic so that peers can fetch it.

The cid is the content-address of the Arrow IPC block holding the gradient tensor. sender_peer_id is the local node’s peer-id string used as the message source.

Source

pub fn announce_provider( &self, cid: &str, peer_id: &str, ) -> Result<(), GossipSubError>

Publish a provider record announcement

Source§

impl GossipSubManager

Source

pub fn mesh_health(&self, topic: &TopicId) -> MeshHealthStatus

Return the aggregate mesh health status for a given topic.

Uses the manager’s configured mesh_n_low and mesh_n_high thresholds.

Source

pub fn heal_mesh_if_needed(&self, topic: &TopicId) -> Vec<PeerId>

Attempt to heal the mesh for topic if it is underpeered.

Selects peers from the gossip peer score table that are not already in the mesh and grafts them in until D_low is satisfied. Returns the list of peer IDs grafted.

Source

pub fn prune_mesh_if_needed(&self, topic: &TopicId) -> Vec<PeerId>

Prune the mesh for topic if it exceeds D_high.

Removes the lowest-scoring peers until the mesh size equals D_high. Returns the list of peer IDs pruned.

Auto Trait Implementations§

Blanket Implementations§

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<'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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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