waku-org/go-waku

View on GitHub
waku/v2/api/missing/options.go

Summary

Maintainability
A
0 mins
Test Coverage
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),
}