[][src]Struct libp2p_gossipsub::Gossipsub

pub struct Gossipsub<D: DataTransform = IdentityTransform, F: TopicSubscriptionFilter = AllowAllSubscriptionFilter> { /* fields omitted */ }

Network behaviour that handles the gossipsub protocol.

NOTE: Initialisation requires a MessageAuthenticity and GossipsubConfig instance. If message signing is disabled, the ValidationMode in the config should be adjusted to an appropriate level to accept unsigned messages.

The DataTransform trait allows applications to optionally add extra encoding/decoding functionality to the underlying messages. This is intended for custom compression algorithms.

The TopicSubscriptionFilter allows applications to implement specific filters on topics to prevent unwanted messages being propagated and evaluated.

Implementations

impl<D, F> Gossipsub<D, F> where
    D: DataTransform + Default,
    F: TopicSubscriptionFilter + Default
[src]

pub fn new(
    privacy: MessageAuthenticity,
    config: GossipsubConfig
) -> Result<Self, &'static str>
[src]

Creates a Gossipsub struct given a set of parameters specified via a GossipsubConfig. This has no subscription filter and uses no compression.

impl<D, F> Gossipsub<D, F> where
    D: DataTransform + Default,
    F: TopicSubscriptionFilter
[src]

pub fn new_with_subscription_filter(
    privacy: MessageAuthenticity,
    config: GossipsubConfig,
    subscription_filter: F
) -> Result<Self, &'static str>
[src]

Creates a Gossipsub struct given a set of parameters specified via a GossipsubConfig and a custom subscription filter.

impl<D, F> Gossipsub<D, F> where
    D: DataTransform,
    F: TopicSubscriptionFilter + Default
[src]

pub fn new_with_transform(
    privacy: MessageAuthenticity,
    config: GossipsubConfig,
    data_transform: D
) -> Result<Self, &'static str>
[src]

Creates a Gossipsub struct given a set of parameters specified via a GossipsubConfig and a custom data transform.

impl<D, F> Gossipsub<D, F> where
    D: DataTransform,
    F: TopicSubscriptionFilter
[src]

pub fn new_with_subscription_filter_and_transform(
    privacy: MessageAuthenticity,
    config: GossipsubConfig,
    subscription_filter: F,
    data_transform: D
) -> Result<Self, &'static str>
[src]

Creates a Gossipsub struct given a set of parameters specified via a GossipsubConfig and a custom subscription filter and data transform.

impl<D, F> Gossipsub<D, F> where
    D: DataTransform,
    F: TopicSubscriptionFilter
[src]

pub fn topics(&self) -> impl Iterator<Item = &TopicHash>[src]

Lists the hashes of the topics we are currently subscribed to.

pub fn mesh_peers(
    &self,
    topic_hash: &TopicHash
) -> impl Iterator<Item = &PeerId>
[src]

Lists all mesh peers for a certain topic hash.

pub fn all_mesh_peers(&self) -> impl Iterator<Item = &PeerId>[src]

Lists all mesh peers for all topics.

pub fn all_peers(&self) -> impl Iterator<Item = (&PeerId, Vec<&TopicHash>)>[src]

Lists all known peers and their associated subscribed topics.

pub fn peer_protocol(&self) -> impl Iterator<Item = (&PeerId, &PeerKind)>[src]

Lists all known peers and their associated protocol.

pub fn peer_score(&self, peer_id: &PeerId) -> Option<f64>[src]

Returns the gossipsub score for a given peer, if one exists.

pub fn subscribe<H: Hasher>(
    &mut self,
    topic: &Topic<H>
) -> Result<bool, SubscriptionError>
[src]

Subscribe to a topic.

Returns [Ok(true)] if the subscription worked. Returns [Ok(false)] if we were already subscribed.

pub fn unsubscribe<H: Hasher>(
    &mut self,
    topic: &Topic<H>
) -> Result<bool, PublishError>
[src]

Unsubscribes from a topic.

Returns [Ok(true)] if we were subscribed to this topic.

pub fn publish<H: Hasher>(
    &mut self,
    topic: Topic<H>,
    data: impl Into<Vec<u8>>
) -> Result<MessageId, PublishError>
[src]

Publishes a message with multiple topics to the network.

pub fn report_message_validation_result(
    &mut self,
    msg_id: &MessageId,
    propagation_source: &PeerId,
    acceptance: MessageAcceptance
) -> Result<bool, PublishError>
[src]

This function should be called when GossipsubConfig::validate_messages() is true after the message got validated by the caller. Messages are stored in the ['Memcache'] and validation is expected to be fast enough that the messages should still exist in the cache. There are three possible validation outcomes and the outcome is given in acceptance.

If acceptance = MessageAcceptance::Accept the message will get propagated to the network. The propagation_source parameter indicates who the message was received by and will not be forwarded back to that peer.

If acceptance = MessageAcceptance::Reject the message will be deleted from the memcache and the P₄ penalty will be applied to the propagation_source. If acceptance = MessageAcceptance::Ignore the message will be deleted from the memcache but no P₄ penalty will be applied.

This function will return true if the message was found in the cache and false if was not in the cache anymore.

This should only be called once per message.

pub fn add_explicit_peer(&mut self, peer_id: &PeerId)[src]

Adds a new peer to the list of explicitly connected peers.

pub fn remove_explicit_peer(&mut self, peer_id: &PeerId)[src]

This removes the peer from explicitly connected peers, note that this does not disconnect the peer.

pub fn blacklist_peer(&mut self, peer_id: &PeerId)[src]

Blacklists a peer. All messages from this peer will be rejected and any message that was created by this peer will be rejected.

pub fn remove_blacklisted_peer(&mut self, peer_id: &PeerId)[src]

Removes a peer from the blacklist if it has previously been blacklisted.

pub fn with_peer_score(
    &mut self,
    params: PeerScoreParams,
    threshold: PeerScoreThresholds
) -> Result<(), String>
[src]

Activates the peer scoring system with the given parameters. This will reset all scores if there was already another peer scoring system activated. Returns an error if the params are not valid or if they got already set.

pub fn with_peer_score_and_message_delivery_time_callback(
    &mut self,
    params: PeerScoreParams,
    threshold: PeerScoreThresholds,
    callback: Option<fn(_: &PeerId, _: &TopicHash, _: f64)>
) -> Result<(), String>
[src]

Activates the peer scoring system with the given parameters and a message delivery time callback. Returns an error if the parameters got already set.

pub fn set_topic_params<H: Hasher>(
    &mut self,
    topic: Topic<H>,
    params: TopicScoreParams
) -> Result<(), &'static str>
[src]

Sets scoring parameters for a topic.

The Self::with_peer_score() must first be called to initialise peer scoring.

pub fn set_application_score(
    &mut self,
    peer_id: &PeerId,
    new_score: f64
) -> bool
[src]

Sets the application specific score for a peer. Returns true if scoring is active and the peer is connected or if the score of the peer is not yet expired, false otherwise.

Trait Implementations

impl<C: DataTransform, F: TopicSubscriptionFilter> Debug for Gossipsub<C, F>[src]

impl<C, F> NetworkBehaviour for Gossipsub<C, F> where
    C: Send + 'static + DataTransform,
    F: Send + 'static + TopicSubscriptionFilter
[src]

type ProtocolsHandler = GossipsubHandler

Handler for all the protocols the network behaviour supports.

type OutEvent = GossipsubEvent

Event generated by the NetworkBehaviour and that the swarm will report back.

Auto Trait Implementations

impl<D = IdentityTransform, F = AllowAllSubscriptionFilter> !RefUnwindSafe for Gossipsub<D, F>[src]

impl<D, F> Send for Gossipsub<D, F> where
    D: Send,
    F: Send
[src]

impl<D, F> Sync for Gossipsub<D, F> where
    D: Sync,
    F: Sync
[src]

impl<D, F> Unpin for Gossipsub<D, F> where
    D: Unpin,
    F: Unpin
[src]

impl<D = IdentityTransform, F = AllowAllSubscriptionFilter> !UnwindSafe for Gossipsub<D, F>[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

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