logo
pub trait TopicSubscriptionFilter {
    fn can_subscribe(&mut self, topic_hash: &TopicHash) -> bool;

    fn filter_incoming_subscriptions(
        &mut self,
        subscriptions: &'a [GossipsubSubscription],
        currently_subscribed_topics: &BTreeSet<TopicHash>
    ) -> Result<HashSet<&'a GossipsubSubscription, RandomState>, String> { ... }
fn filter_incoming_subscription_set(
        &mut self,
        subscriptions: HashSet<&'a GossipsubSubscription, RandomState>,
        _currently_subscribed_topics: &BTreeSet<TopicHash>
    ) -> Result<HashSet<&'a GossipsubSubscription, RandomState>, String> { ... }
fn allow_incoming_subscription(
        &mut self,
        subscription: &GossipsubSubscription
    ) -> bool { ... } }

Required methods

Returns true iff the topic is of interest and we can subscribe to it.

Provided methods

Filters a list of incoming subscriptions and returns a filtered set By default this deduplicates the subscriptions and calls Self::filter_incoming_subscription_set on the filtered set.

Filters a set of deduplicated subscriptions By default this filters the elements based on Self::allow_incoming_subscription.

Returns true iff we allow an incoming subscription. This is used by the default implementation of filter_incoming_subscription_set to decide whether to filter out a subscription or not. By default this uses can_subscribe to decide the same for incoming subscriptions as for outgoing ones.

Implementors