waku-org/go-waku

View on GitHub
waku/v2/protocol/relay/options.go

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package relay

import pubsub "github.com/libp2p/go-libp2p-pubsub"

type publishParameters struct {
    pubsubTopic string
}

// PublishOption is the type of options accepted when publishing WakuMessages
type PublishOption func(*publishParameters)

// WithPubSubTopic is used to specify the pubsub topic on which a WakuMessage will be broadcasted
func WithPubSubTopic(pubsubTopic string) PublishOption {
    return func(params *publishParameters) {
        params.pubsubTopic = pubsubTopic
    }
}

// WithDefaultPubsubTopic is used to indicate that the message should be broadcasted in the default pubsub topic
func WithDefaultPubsubTopic() PublishOption {
    return func(params *publishParameters) {
        params.pubsubTopic = DefaultWakuTopic
    }
}

type relayParameters struct {
    pubsubOpts      []pubsub.Option
    maxMsgSizeBytes int
}

type RelayOption func(*relayParameters)

func WithPubSubOptions(opts []pubsub.Option) RelayOption {
    return func(params *relayParameters) {
        params.pubsubOpts = append(params.pubsubOpts, opts...)
    }
}

func WithMaxMsgSize(maxMsgSizeBytes int) RelayOption {
    return func(params *relayParameters) {
        if maxMsgSizeBytes == 0 {
            maxMsgSizeBytes = defaultMaxMsgSizeBytes
        }
        params.maxMsgSizeBytes = maxMsgSizeBytes
    }
}

func defaultOptions() []RelayOption {
    return []RelayOption{
        WithMaxMsgSize(defaultMaxMsgSizeBytes),
    }
}