waku/v2/api/missing/options.go
package missing
import (
"time"
"github.com/waku-org/go-waku/waku/v2/api/common"
)
type missingMessageVerifierParams struct {
delay time.Duration
interval time.Duration
maxAttemptsToRetrieveHistory int
storeQueryTimeout time.Duration
}
// MissingMessageVerifierOption is an option that can be used to customize the MissingMessageVerifier behavior
type MissingMessageVerifierOption func(*missingMessageVerifierParams)
// WithVerificationInterval is an option used to setup the verification interval
func WithVerificationInterval(t time.Duration) MissingMessageVerifierOption {
return func(params *missingMessageVerifierParams) {
params.interval = t
}
}
// WithDelay is an option used to indicate the delay to apply for verifying messages
func WithDelay(t time.Duration) MissingMessageVerifierOption {
return func(params *missingMessageVerifierParams) {
params.delay = t
}
}
// WithMaxAttempts indicates how many times will the message verifier retry a failed storenode request
func WithMaxRetryAttempts(max int) MissingMessageVerifierOption {
return func(params *missingMessageVerifierParams) {
params.maxAttemptsToRetrieveHistory = max
}
}
// WithStoreQueryTimeout sets the timeout for store query
func WithStoreQueryTimeout(timeout time.Duration) MissingMessageVerifierOption {
return func(params *missingMessageVerifierParams) {
params.storeQueryTimeout = timeout
}
}
var defaultMissingMessagesVerifierOptions = []MissingMessageVerifierOption{
WithVerificationInterval(time.Minute),
WithDelay(20 * time.Second),
WithMaxRetryAttempts(3),
WithStoreQueryTimeout(common.DefaultStoreQueryTimeout),
}