sherdlock

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 7, 2025 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Lazy     = "lazy"
	Eager    = "eager"
	Mixed    = "mixed"
	Listener = "listener"
	Cached   = "cached"
)
View Source
const (
	NoBackoff = -1
)

Variables

This section is empty.

Functions

func NewFetcherProvider

func NewFetcherProvider(dbManager *tokendb.Manager, notifierManager *tokendb.NotifierManager, metricsProvider metrics.Provider, strategy FetcherStrategy) *fetcherProvider

func NewLazyFetcher

func NewLazyFetcher(tokenDB TokenDB) *lazyFetcher

func NewManager

func NewManager(
	fetcher tokenFetcher,
	locker Locker,
	precision uint64,
	backoff time.Duration,
	maxRetriesAfterBackOff int,
	leaseExpiry time.Duration,
	leaseCleanupTickPeriod time.Duration,
) *manager

func NewSelector

func NewSelector(logger logging.Logger, tokenDB tokenFetcher, lockDB tokenLocker, precision uint64) *selector

func NewSherdSelector

func NewSherdSelector(txID transaction.ID, fetcher tokenFetcher, lockDB Locker, precision uint64, backoff time.Duration, maxRetriesAfterBackoff int) tokenSelectorUnlocker

func NewStubbornSelector

func NewStubbornSelector(logger logging.Logger, tokenDB tokenFetcher, lockDB tokenLocker, precision uint64, backoff time.Duration, retries int) *stubbornSelector

Types

type FetcherProvider

type FetcherProvider interface {
	GetFetcher(tmsID token.TMSID) (tokenFetcher, error)
}

type FetcherStrategy

type FetcherStrategy string

type Iterator

type Iterator[V any] interface {
	Next() V
}

type Locker

type Locker interface {
	// Lock locks a specific token for the consumer TX
	Lock(tokenID *token2.ID, consumerTxID transaction.ID) error
	// UnlockByTxID unlocks all tokens locked by the consumer TX
	UnlockByTxID(consumerTxID transaction.ID) error
	// Cleanup removes the locks such that either:
	// 1. The transaction that locked that token is valid or invalid;
	// 2. The lock is too old.
	Cleanup(leaseExpiry time.Duration) error
}

type Metrics

type Metrics struct {
	UnspentTokensInvocations metrics.Counter
}

type SelectorService

type SelectorService struct {
	// contains filtered or unexported fields
}

func NewService

func NewService(fetcherProvider FetcherProvider, tokenLockDBManager *tokenlockdb.Manager, c core.ConfigProvider) *SelectorService

func (*SelectorService) SelectorManager

func (s *SelectorService) SelectorManager(tms *token.ManagementService) (token.SelectorManager, error)

type TokenDB

type TokenDB interface {
	SpendableTokensIteratorBy(ctx context.Context, walletID string, typ token2.Type) (driver.SpendableTokensIterator, error)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL