Documentation
¶
Overview ¶
Package utils is used for common functions and tools used across the codebase.
Index ¶
- Constants
- Variables
- func ABIDecode(abiStr string, data []byte) ([]interface{}, error)
- func ABIEncode(abiStr string, values ...interface{}) ([]byte, error)
- func AddHexPrefix(str string) string
- func AllEqual[T comparable](elems ...T) bool
- func BatchSplit[T any](list []T, max int) (out [][]T, err error)
- func BoxOutput(errorMsgTemplate string, errorMsgValues ...interface{}) string
- func Bytes32FromString(s string) [32]byte
- func Bytes32ToSlice(a [32]byte) (r []byte)
- func Bytes4FromString(s string) [4]byte
- func CheckPasswordHash(password, hash string) bool
- func CheckUint256(n *big.Int) error
- func ConcatBytes(bufs ...[]byte) []byte
- func ContextFromChan(chStop <-chan struct{}) (context.Context, context.CancelFunc)
- func ContextFromChanWithDeadline(chStop <-chan struct{}, timeout time.Duration) (context.Context, context.CancelFunc)
- func DurationFromNow(t time.Time) time.Duration
- func EIP55CapitalizedAddress(possibleAddressString string) bool
- func EVMBytesToUint64(buf []byte) uint64
- func EVMEncodeBytes(input []byte) []byte
- func EVMTranscodeBool(value gjson.Result) ([]byte, error)
- func EVMTranscodeInt256(value gjson.Result) ([]byte, error)
- func EVMTranscodeUint256(value gjson.Result) ([]byte, error)
- func EVMWordBigInt(val *big.Int) ([]byte, error)
- func EVMWordSignedBigInt(val *big.Int) ([]byte, error)
- func EVMWordUint128(val *big.Int) ([]byte, error)
- func EVMWordUint32(val uint32) []byte
- func EVMWordUint64(val uint64) []byte
- func EnsureClosed(c io.Closer) error
- func EnsureDirAndMaxPerms(path string, perms os.FileMode) error
- func EnsureFileMaxPerms(file *os.File, perms os.FileMode) error
- func EnsureFilepathMaxPerms(filepath string, perms os.FileMode) (err error)
- func FileExists(name string) bool
- func FiniteTicker(period time.Duration, onTick func()) func()
- func FormatJSON(v interface{}) ([]byte, error)
- func HasHexPrefix(str string) bool
- func HashPassword(password string) (string, error)
- func HexToBig(s string) *big.Int
- func HexToUint256(s string) (*big.Int, error)
- func ISO8601UTC(t time.Time) string
- func IsEmpty(bytes []byte) bool
- func IsEmptyAddress(addr common.Address) bool
- func IsFileOwnedByChainlink(fileInfo os.FileInfo) (bool, error)
- func IsQuoted(input []byte) bool
- func JustError(_ interface{}, err error) error
- func Keccak256(in []byte) ([]byte, error)
- func Keccak256Fixed(in []byte) [32]byte
- func LeftPadBitString(input string, length int) string
- func MinKey[U any, T constraints.Ordered](elems []U, key func(U) T) T
- func MultiErrorList(err error) error
- func MustAbiType(ts string, components []abi.ArgumentMarshaling) abi.Type
- func MustHash(in string) common.Hash
- func MustNewPeerID() string
- func MustUnmarshalToMap(input string) map[string]interface{}
- func NewBytes32ID() string
- func NewHash() common.Hash
- func NewRedialBackoff() backoff.Backoff
- func NewSecret(n int) string
- func NormalizedJSON(val []byte) (string, error)
- func PadByteToHash(b byte) common.Hash
- func ParseEthereumAddress(addressString string) (common.Address, error)
- func PasswordFromFile(pwdFile string) (string, error)
- func RandUint256() *big.Int
- func RandomAddress() common.Address
- func RandomBytes32() (r [32]byte)
- func RemoveHexPrefix(str string) string
- func RemoveQuotes(input []byte) []byte
- func RetryWithBackoff(ctx context.Context, fn func() (retry bool))
- func Sha256(in string) (string, error)
- func StringToHex(in string) string
- func ToDecimal(input interface{}) (decimal.Decimal, error)
- func TooPermissive(fileMode, maxAllowedPerms os.FileMode) bool
- func TryParseHex(s string) (b []byte, err error)
- func Uint256ToBytes(x *big.Int) (uint256 []byte, err error)
- func Uint256ToBytes32(n *big.Int) []byte
- func UnmarshalToMap(input string) (map[string]interface{}, error)
- func ValidateCronSchedule(schedule string) error
- func VerifyPasswordComplexity(password string, disallowedStrings ...string) (merr error)
- func WaitGroupChan(wg *sync.WaitGroup) <-chan struct{}
- func WithCloseChan(parentCtx context.Context, chStop <-chan struct{}) (ctx context.Context, cancel context.CancelFunc)
- func WithJitter(d time.Duration) time.Duration
- func WrapIfError(err *error, msg string)
- func WriteFileWithMaxPerms(path string, data []byte, perms os.FileMode) (err error)
- type BackoffSleeper
- type BackoffTicker
- type Big
- func (b *Big) Add(c interface{}) *Big
- func (b *Big) Bytes() []byte
- func (b *Big) Cmp(c *Big) int
- func (b *Big) Equal(c *Big) bool
- func (b *Big) Hex() string
- func (b *Big) Int64() int64
- func (b Big) MarshalJSON() ([]byte, error)
- func (b Big) MarshalText() ([]byte, error)
- func (b *Big) Mod(c interface{}) *Big
- func (b *Big) Scan(value interface{}) error
- func (b *Big) String() string
- func (b *Big) Sub(c interface{}) *Big
- func (b *Big) ToInt() *big.Int
- func (b *Big) UnmarshalJSON(input []byte) error
- func (b *Big) UnmarshalText(input []byte) error
- func (b Big) Value() (driver.Value, error)
- func (b *Big) Wei() *Wei
- type BigFloat
- type BoundedPriorityQueue
- type BoundedQueue
- type CronTicker
- type DependentAwaiter
- type DiskStatsProvider
- type FileSize
- type KeyedMutex
- type LazyLoad
- type Mailbox
- type PausableTicker
- type ResettableTimer
- type ScryptConfigReader
- type ScryptParams
- type Sleeper
- type SleeperTask
- type StartStopOnce
- func (once *StartStopOnce) Healthy() error
- func (once *StartStopOnce) IfNotStopped(f func()) (ok bool)
- func (once *StartStopOnce) IfStarted(f func()) (ok bool)
- func (once *StartStopOnce) Ready() error
- func (once *StartStopOnce) StartOnce(name string, fn func() error) error
- func (once *StartStopOnce) State() StartStopOnceState
- func (once *StartStopOnce) StopOnce(name string, fn func() error) error
- type StartStopOnceState
- type TickerBase
- type Wei
- type Worker
Constants ¶
const (
// FormatBytes encodes the output as bytes
FormatBytes = "bytes"
// FormatPreformatted encodes the output, assumed to be hex, as bytes.
FormatPreformatted = "preformatted"
// FormatUint256 encodes the output as bytes containing a uint256
FormatUint256 = "uint256"
// FormatInt256 encodes the output as bytes containing an int256
FormatInt256 = "int256"
// FormatBool encodes the output as bytes containing a bool
FormatBool = "bool"
)
const (
KB = 1000
MB = 1000 * KB
GB = 1000 * MB
TB = 1000 * GB
)
nolint
const (
// FastN is a shorter N parameter for testing
FastN = 2
// FastP is a shorter P parameter for testing
FastP = 1
)
const (
// DefaultSecretSize is the entropy in bytes to generate a base64 string of 64 characters.
DefaultSecretSize = 48
// EVMWordByteLen the length of an EVM Word Byte
EVMWordByteLen = 32
)
const MinRequiredLen = 16
const PasswordComplexityRequirements = `` /* 172-byte string literal not displayed */
PasswordComplexityRequirements defines the complexity requirements message Note that adding an entropy requirement wouldn't add much, since a 16 character password already has an entropy score of 75 even if it's all lowercase characters
Variables ¶
var (
// MaxUint256 represents the largest number represented by an EVM word
MaxUint256 = &big.Int{}
// MaxInt256 represents the largest number represented by an EVM word using
// signed encoding.
MaxInt256 = &big.Int{}
// MinInt256 represents the smallest number represented by an EVM word using
// signed encoding.
MinInt256 = &big.Int{}
)
"Constants" used by EVM words
var (
ErrPasswordWhitespace = errors.New("leading/trailing whitespace detected in password")
ErrEmptyPasswordInFile = errors.New("detected empty password in password file")
)
var (
ErrMsgHeader = fmt.Sprintf(`
Expected password complexity:
Must be at least %d characters long
Must not comprise:
Leading or trailing whitespace
A user's API email
Faults:
`, MinRequiredLen)
ErrWhitespace = errors.New("password contains a leading or trailing whitespace")
)
var (
ErrAlreadyStopped = errors.New("already stopped")
ErrCannotStopUnstarted = errors.New("cannot stop unstarted service")
)
var DefaultScryptParams = ScryptParams{N: keystore.StandardScryptN, P: keystore.StandardScryptP}
DefaultScryptParams is for use in production. It used geth's standard level of encryption and is relatively expensive to decode. Avoid using this in tests.
var EmptyHash = common.Hash{}
EmptyHash is a hash of all zeroes, otherwise in Ethereum as 0x0000000000000000000000000000000000000000000000000000000000000000
var FastScryptParams = ScryptParams{N: FastN, P: FastP}
FastScryptParams is for use in tests, where you don't want to wear out your CPU with expensive key derivations, do not use it in production, or your encrypted keys will be easy to brute-force!
var LeadingWhitespace = regexp.MustCompile(`^\s+`)
var TrailingWhitespace = regexp.MustCompile(`\s+$`)
var ZeroAddress = common.Address{}
ZeroAddress is an address of all zeroes, otherwise in Ethereum as 0x0000000000000000000000000000000000000000
Functions ¶
func ABIDecode ¶ added in v1.9.0
func ABIDecode(abiStr string, data []byte) ([]interface{}, error)
ABIEncode is the equivalent of abi.decode. See a full set of examples https://github.com/ethereum/go-ethereum/blob/420b78659bef661a83c5c442121b13f13288c09f/accounts/abi/packing_test.go#L31
func ABIEncode ¶ added in v1.9.0
func ABIEncode(abiStr string, values ...interface{}) ([]byte, error)
ABIEncode is the equivalent of abi.encode. See a full set of examples https://github.com/ethereum/go-ethereum/blob/420b78659bef661a83c5c442121b13f13288c09f/accounts/abi/packing_test.go#L31
func AddHexPrefix ¶
func AddHexPrefix(str string) string
AddHexPrefix adds the prefix (0x) to a given hex string.
func AllEqual ¶ added in v1.4.0
func AllEqual[T comparable](elems ...T) bool
AllEqual returns true iff all the provided elements are equal to each other.
func BatchSplit ¶ added in v1.5.0
func BatchSplit[T any](list []T, max int) (out [][]T, err error)
BatchSplit splits an slices into an slices of slicess with a maximum length
func BoxOutput ¶ added in v0.10.11
func BoxOutput(errorMsgTemplate string, errorMsgValues ...interface{}) string
BoxOutput formats its arguments as fmt.Printf, and encloses them in a box of arrows pointing at their content, in order to better highlight it. See ExampleBoxOutput
func Bytes32FromString ¶ added in v0.10.9
func Bytes32FromString(s string) [32]byte
Bytes32FromString returns a 32 byte array filled from the given string, which may be of any length.
func Bytes32ToSlice ¶ added in v1.5.0
func Bytes32ToSlice(a [32]byte) (r []byte)
func Bytes4FromString ¶ added in v0.10.9
func Bytes4FromString(s string) [4]byte
Bytes4FromString returns a 4 byte array filled from the given string, which may be of any length.
func CheckPasswordHash ¶
func CheckPasswordHash(password, hash string) bool
CheckPasswordHash wraps around bcrypt.CompareHashAndPassword for a friendlier API.
func CheckUint256 ¶ added in v0.8.2
func CheckUint256(n *big.Int) error
CheckUint256 returns an error if n is out of bounds for a uint256
func ConcatBytes ¶
func ConcatBytes(bufs ...[]byte) []byte
ConcatBytes appends a bunch of byte arrays into a single byte array
func ContextFromChan ¶ added in v0.9.3
func ContextFromChan(chStop <-chan struct{}) (context.Context, context.CancelFunc)
ContextFromChan creates a context that finishes when the provided channel receives or is closed. When channel closes, the ctx.Err() will always be context.Canceled NOTE: Spins up a goroutine that exits on cancellation. REMEMBER TO CALL CANCEL OTHERWISE IT CAN LEAD TO MEMORY LEAKS
func ContextFromChanWithDeadline ¶ added in v1.1.0
func ContextFromChanWithDeadline(chStop <-chan struct{}, timeout time.Duration) (context.Context, context.CancelFunc)
ContextFromChanWithDeadline creates a context with a deadline that finishes when the provided channel receives or is closed. NOTE: Spins up a goroutine that exits on cancellation. REMEMBER TO CALL CANCEL OTHERWISE IT CAN LEAD TO MEMORY LEAKS
func DurationFromNow ¶
func DurationFromNow(t time.Time) time.Duration
DurationFromNow returns the amount of time since the Time field was last updated.
func EIP55CapitalizedAddress ¶
func EIP55CapitalizedAddress(possibleAddressString string) bool
EIP55CapitalizedAddress returns true iff possibleAddressString has the correct capitalization for an Ethereum address, per EIP 55
func EVMBytesToUint64 ¶ added in v0.9.0
func EVMBytesToUint64(buf []byte) uint64
EVMBytesToUint64 converts a bytebuffer to uint64
func EVMEncodeBytes ¶
func EVMEncodeBytes(input []byte) []byte
EVMEncodeBytes encodes arbitrary bytes as bytes expected by the EVM
func EVMTranscodeBool ¶
func EVMTranscodeBool(value gjson.Result) ([]byte, error)
EVMTranscodeBool converts a json input to an EVM bool
func EVMTranscodeInt256 ¶
func EVMTranscodeInt256(value gjson.Result) ([]byte, error)
EVMTranscodeInt256 converts a json input to an EVM int256
func EVMTranscodeUint256 ¶
func EVMTranscodeUint256(value gjson.Result) ([]byte, error)
EVMTranscodeUint256 converts a json input to an EVM uint256
func EVMWordBigInt ¶
func EVMWordBigInt(val *big.Int) ([]byte, error)
EVMWordBigInt returns a big.Int as an EVM word byte array, with support for a signed representation. Returns error on overflow.
func EVMWordSignedBigInt ¶
func EVMWordSignedBigInt(val *big.Int) ([]byte, error)
EVMWordSignedBigInt returns a big.Int as an EVM word byte array, with support for a signed representation. Returns error on overflow.
func EVMWordUint128 ¶ added in v0.8.2
func EVMWordUint128(val *big.Int) ([]byte, error)
EVMWordUint128 returns a uint128 as an EVM word byte array.
func EVMWordUint32 ¶ added in v1.0.0
func EVMWordUint32(val uint32) []byte
EVMWordUint32 returns a uint32 as an EVM word byte array.
func EVMWordUint64 ¶
func EVMWordUint64(val uint64) []byte
EVMWordUint64 returns a uint64 as an EVM word byte array.
func EnsureClosed ¶ added in v1.9.0
func EnsureClosed(c io.Closer) error
EnsureClosed closes the io.Closer, returning nil if it was already closed or not started yet
func EnsureDirAndMaxPerms ¶ added in v0.8.5
func EnsureDirAndMaxPerms(path string, perms os.FileMode) error
EnsureDirAndMaxPerms ensures that the given path exists, that it's a directory, and that it has permissions that are no more permissive than the given ones.
- If the path does not exist, it is created - If the path exists, but is not a directory, an error is returned - If the path exists, and is a directory, but has the wrong perms, it is chmod'ed
func EnsureFileMaxPerms ¶ added in v0.8.5
func EnsureFileMaxPerms(file *os.File, perms os.FileMode) error
EnsureFileMaxPerms ensures that the given file has permissions that are no more permissive than the given ones.
func EnsureFilepathMaxPerms ¶ added in v0.8.5
func EnsureFilepathMaxPerms(filepath string, perms os.FileMode) (err error)
EnsureFilepathMaxPerms ensures that the file at the given filepath has permissions that are no more permissive than the given ones.
func FileExists ¶
func FileExists(name string) bool
FileExists returns true if a file at the passed string exists.
func FiniteTicker ¶ added in v1.1.0
func FiniteTicker(period time.Duration, onTick func()) func()
FiniteTicker starts a goroutine to execute the given function periodically, until the returned function is called.
func FormatJSON ¶
func FormatJSON(v interface{}) ([]byte, error)
FormatJSON applies indent to format a JSON response.
func HasHexPrefix ¶
func HasHexPrefix(str string) bool
HasHexPrefix returns true if the string starts with 0x.
func HashPassword ¶
func HashPassword(password string) (string, error)
HashPassword wraps around bcrypt.GenerateFromPassword for a friendlier API.
func HexToBig ¶ added in v0.10.8
func HexToBig(s string) *big.Int
HexToBig parses the given hex string or panics if it is invalid.
func HexToUint256 ¶ added in v0.8.2
func HexToUint256(s string) (*big.Int, error)
HexToUint256 returns the uint256 represented by s, or an error if it doesn't represent one.
func IsEmpty ¶ added in v0.10.4
func IsEmpty(bytes []byte) bool
IsEmpty returns true if bytes contains only zero values, or has len 0.
func IsEmptyAddress ¶
func IsEmptyAddress(addr common.Address) bool
IsEmptyAddress checks that the address is empty, synonymous with the zero account/address. No logs can come from this address, as there is no contract present there.
See https://stackoverflow.com/questions/48219716/what-is-address0-in-solidity for the more info on the zero address.
func IsFileOwnedByChainlink ¶ added in v0.8.9
func IsFileOwnedByChainlink(fileInfo os.FileInfo) (bool, error)
IsFileOwnedByChainlink attempts to read fileInfo to verify file owner
func IsQuoted ¶
func IsQuoted(input []byte) bool
IsQuoted checks if the first and last characters are either " or '.
func JustError ¶
func JustError(_ interface{}, err error) error
JustError takes a tuple and returns the last entry, the error.
func Keccak256 ¶
func Keccak256(in []byte) ([]byte, error)
Keccak256 is a simplified interface for the legacy SHA3 implementation that Ethereum uses.
func Keccak256Fixed ¶ added in v1.5.0
func Keccak256Fixed(in []byte) [32]byte
func LeftPadBitString ¶ added in v1.5.0
func LeftPadBitString(input string, length int) string
func MinKey ¶ added in v1.8.0
func MinKey[U any, T constraints.Ordered](elems []U, key func(U) T) T
MinKey returns the minimum value of the given element array with respect to the given key function. In the event U is not a compound type (e.g a struct) an identity function can be provided.
func MultiErrorList ¶ added in v1.8.0
func MultiErrorList(err error) error
MultiErrorList returns an error which formats underlying errors as a list, or nil if err is nil.
func MustAbiType ¶ added in v1.5.0
func MustAbiType(ts string, components []abi.ArgumentMarshaling) abi.Type
func MustHash ¶
func MustHash(in string) common.Hash
MustHash returns the keccak256 hash, or panics on failure.
func MustNewPeerID ¶ added in v1.5.0
func MustNewPeerID() string
func MustUnmarshalToMap ¶ added in v0.8.17
func MustUnmarshalToMap(input string) map[string]interface{}
MustUnmarshalToMap performs UnmarshalToMap, panics upon failure
func NewBytes32ID ¶
func NewBytes32ID() string
NewBytes32ID returns a randomly generated UUID that conforms to Ethereum bytes32.
func NewRedialBackoff ¶ added in v1.3.0
func NewRedialBackoff() backoff.Backoff
NewRedialBackoff is a standard backoff to use for redialling or reconnecting to unreachable network endpoints
func NewSecret ¶ added in v0.6.6
func NewSecret(n int) string
NewSecret returns a new securely random sequence of n bytes of entropy. The result is a base64 encoded string.
Panics on failed attempts to read from system's PRNG.
func NormalizedJSON ¶
func NormalizedJSON(val []byte) (string, error)
NormalizedJSON returns a JSON representation of an object that has been normalized to produce a consistent output for hashing.
NOTE: If this string is unmarshalled again, there is no guarantee that the final representation will be consistent with the string produced by this function due to differences in JSON implementations and information loss. e.g:
JSON does not have a requirement to respect object key ordering.
func PadByteToHash ¶ added in v0.10.11
func PadByteToHash(b byte) common.Hash
PadByteToHash returns a hash with zeros padded on the left of the given byte.
func ParseEthereumAddress ¶
func ParseEthereumAddress(addressString string) (common.Address, error)
ParseEthereumAddress returns addressString as a go-ethereum Address, or an error if it's invalid, e.g. if EIP 55 capitalization check fails
func PasswordFromFile ¶ added in v1.8.0
func PasswordFromFile(pwdFile string) (string, error)
func RandUint256 ¶ added in v1.5.0
func RandUint256() *big.Int
RandUint256 generates a random bigNum up to 2 ** 256 - 1
func RandomAddress ¶ added in v1.5.0
func RandomAddress() common.Address
func RandomBytes32 ¶ added in v1.5.0
func RandomBytes32() (r [32]byte)
func RemoveHexPrefix ¶
func RemoveHexPrefix(str string) string
RemoveHexPrefix removes the prefix (0x) of a given hex string.
func RemoveQuotes ¶
func RemoveQuotes(input []byte) []byte
RemoveQuotes removes the first and last character if they are both either " or ', otherwise it is a noop.
func RetryWithBackoff ¶ added in v0.8.3
func RetryWithBackoff(ctx context.Context, fn func() (retry bool))
RetryWithBackoff retries the sleeper and backs off if not Done
func Sha256 ¶
func Sha256(in string) (string, error)
Sha256 returns a hexadecimal encoded string of a hashed input
func StringToHex ¶
func StringToHex(in string) string
StringToHex converts a standard string to a hex encoded string.
func ToDecimal ¶ added in v0.9.3
func ToDecimal(input interface{}) (decimal.Decimal, error)
ToDecimal converts an input to a decimal
func TooPermissive ¶ added in v0.8.5
func TooPermissive(fileMode, maxAllowedPerms os.FileMode) bool
TooPermissive checks if the file has more than the allowed permissions
func TryParseHex ¶ added in v1.5.0
func TryParseHex(s string) (b []byte, err error)
TryParseHex parses the given hex string to bytes, it can return error if the hex string is invalid. Follows the semantic of ethereum's FromHex.
func Uint256ToBytes ¶ added in v0.8.2
func Uint256ToBytes(x *big.Int) (uint256 []byte, err error)
Uint256ToBytes is x represented as the bytes of a uint256
func Uint256ToBytes32 ¶ added in v0.10.8
func Uint256ToBytes32(n *big.Int) []byte
Uint256ToBytes32 returns the bytes32 encoding of the big int provided
func UnmarshalToMap ¶ added in v0.8.17
func UnmarshalToMap(input string) (map[string]interface{}, error)
UnmarshalToMap takes an input json string and returns a map[string]interface i.e. a raw object
func ValidateCronSchedule ¶ added in v0.10.10
func ValidateCronSchedule(schedule string) error
ValidateCronSchedule returns an error if the given schedule is invalid.
func VerifyPasswordComplexity ¶ added in v1.5.0
func VerifyPasswordComplexity(password string, disallowedStrings ...string) (merr error)
func WaitGroupChan ¶ added in v0.8.3
func WaitGroupChan(wg *sync.WaitGroup) <-chan struct{}
WaitGroupChan creates a channel that closes when the provided sync.WaitGroup is done.
func WithCloseChan ¶ added in v1.3.0
func WithCloseChan(parentCtx context.Context, chStop <-chan struct{}) (ctx context.Context, cancel context.CancelFunc)
WithCloseChan wraps a context so that it is canceled if the passed in channel is closed. NOTE: Spins up a goroutine that exits on cancellation. REMEMBER TO CALL CANCEL OTHERWISE IT CAN LEAD TO MEMORY LEAKS
func WithJitter ¶ added in v0.9.6
func WithJitter(d time.Duration) time.Duration
WithJitter adds +/- 10% to a duration
func WrapIfError ¶ added in v0.8.13
func WrapIfError(err *error, msg string)
WrapIfError decorates an error with the given message. It is intended to be used with `defer` statements, like so:
func SomeFunction() (err error) {
defer WrapIfError(&err, "error in SomeFunction:")
...
}
func WriteFileWithMaxPerms ¶ added in v0.8.5
func WriteFileWithMaxPerms(path string, data []byte, perms os.FileMode) (err error)
WriteFileWithMaxPerms writes `data` to `path` and ensures that the file has permissions that are no more permissive than the given ones.
Types ¶
type BackoffSleeper ¶
type BackoffSleeper struct {
backoff.Backoff
// contains filtered or unexported fields
}
BackoffSleeper is a sleeper that backs off on subsequent attempts.
func NewBackoffSleeper ¶
func NewBackoffSleeper() *BackoffSleeper
NewBackoffSleeper returns a BackoffSleeper that is configured to sleep for 0 seconds initially, then backs off from 1 second minimum to 10 seconds maximum.
func (*BackoffSleeper) After ¶
func (bs *BackoffSleeper) After() time.Duration
After returns the duration for the next stop, and increments the backoff.
func (*BackoffSleeper) Duration ¶
func (bs *BackoffSleeper) Duration() time.Duration
Duration returns the current duration value.
type BackoffTicker ¶ added in v0.10.5
type BackoffTicker struct {
C chan time.Time
sync.Mutex
// contains filtered or unexported fields
}
BackoffTicker sends ticks with periods that increase over time, over a configured range.
func NewBackoffTicker ¶ added in v0.10.5
func NewBackoffTicker(min, max time.Duration) BackoffTicker
NewBackoffTicker returns a new BackoffTicker for the given range.
func (*BackoffTicker) Bounds ¶ added in v0.10.8
func (t *BackoffTicker) Bounds() (time.Duration, time.Duration)
func (*BackoffTicker) Start ¶ added in v0.10.5
func (t *BackoffTicker) Start() bool
Start - Starts the ticker Returns true if the ticker was not running yet
type Big ¶ added in v0.8.2
type Big big.Int
Big stores large integers and can deserialize a variety of inputs.
func (*Big) Add ¶ added in v1.5.0
func (b *Big) Add(c interface{}) *Big
Add returns the sum of b and c
func (*Big) Equal ¶ added in v1.1.0
func (b *Big) Equal(c *Big) bool
Equal returns true if c is equal according to Cmp.
func (*Big) Hex ¶ added in v0.8.2
func (b *Big) Hex() string
Bytes returns the absolute value of b as a big-endian byte slice.
func (Big) MarshalJSON ¶ added in v0.8.2
func (b Big) MarshalJSON() ([]byte, error)
MarshalJSON marshals this instance to base 10 number as string.
func (Big) MarshalText ¶ added in v0.8.2
func (b Big) MarshalText() ([]byte, error)
MarshalText marshals this instance to base 10 number as string.
func (*Big) Scan ¶ added in v0.8.2
func (b *Big) Scan(value interface{}) error
Scan reads the database value and returns an instance.
func (*Big) String ¶ added in v0.8.2
func (b *Big) String() string
String returns the base 10 encoding of b.
func (*Big) Sub ¶ added in v1.5.0
func (b *Big) Sub(c interface{}) *Big
Sub returns the differencs between b and c
func (*Big) UnmarshalJSON ¶ added in v0.8.2
func (b *Big) UnmarshalJSON(input []byte) error
UnmarshalJSON implements encoding.JSONUnmarshaler.
func (*Big) UnmarshalText ¶ added in v0.8.2
func (b *Big) UnmarshalText(input []byte) error
UnmarshalText implements encoding.TextUnmarshaler.
type BigFloat ¶ added in v0.8.2
type BigFloat big.Float
BigFloat accepts both string and float JSON values.
func (BigFloat) MarshalJSON ¶ added in v0.8.2
func (b BigFloat) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaler interface.
func (*BigFloat) UnmarshalJSON ¶ added in v0.8.2
func (b *BigFloat) UnmarshalJSON(buf []byte) error
UnmarshalJSON implements the json.Unmarshal interface.
type BoundedPriorityQueue ¶ added in v0.8.3
type BoundedPriorityQueue[T any] struct {
// contains filtered or unexported fields
}
BoundedPriorityQueue stores a series of BoundedQueues with associated priorities and capacities
func NewBoundedPriorityQueue ¶ added in v0.8.3
func NewBoundedPriorityQueue[T any](capacities map[uint]int) *BoundedPriorityQueue[T]
NewBoundedPriorityQueue creates a new BoundedPriorityQueue
func (*BoundedPriorityQueue[T]) Add ¶ added in v0.8.3
func (q *BoundedPriorityQueue[T]) Add(priority uint, x T)
Add pushes an item into a subque within a BoundedPriorityQueue
type BoundedQueue ¶ added in v0.8.3
type BoundedQueue[T any] struct {
// contains filtered or unexported fields
}
BoundedQueue is a FIFO queue that discards older items when it reaches its capacity.
func NewBoundedQueue ¶ added in v0.8.3
func NewBoundedQueue[T any](capacity int) *BoundedQueue[T]
NewBoundedQueue creates a new BoundedQueue instance
func (*BoundedQueue[T]) Add ¶ added in v0.8.3
func (q *BoundedQueue[T]) Add(x T)
Add appends items to a BoundedQueue
func (*BoundedQueue[T]) Empty ¶ added in v0.8.3
func (q *BoundedQueue[T]) Empty() bool
Empty check is a BoundedQueue is empty
type CronTicker ¶ added in v0.10.10
type CronTicker struct {
*cron.Cron
// contains filtered or unexported fields
}
CronTicker is like a time.Ticker but for a cron schedule.
func NewCronTicker ¶ added in v0.10.10
func NewCronTicker(schedule string) (CronTicker, error)
NewCronTicker returns a new CrontTicker for the given schedule.
func (*CronTicker) Start ¶ added in v0.10.10
func (t *CronTicker) Start() bool
Start - returns true if the CronTicker was actually started, false otherwise
type DependentAwaiter ¶ added in v0.8.3
type DependentAwaiter interface {
AwaitDependents() <-chan struct{}
AddDependents(n int)
DependentReady()
}
DependentAwaiter contains Dependent funcs
func NewDependentAwaiter ¶ added in v0.8.3
func NewDependentAwaiter() DependentAwaiter
NewDependentAwaiter creates a new DependentAwaiter
type DiskStatsProvider ¶ added in v1.3.0
type DiskStatsProvider interface {
AvailableSpace(path string) (FileSize, error)
}
DiskStatsProvider describes the abstraction to the `shirou/gopsutil/v3` for mocking purposes
func NewDiskStatsProvider ¶ added in v1.3.0
func NewDiskStatsProvider() DiskStatsProvider
NewDiskStatsProvider returns a new `DiskStatsProvider` instance
type FileSize ¶ added in v1.1.0
type FileSize uint64
FileSize repesents a file size in bytes.
func (FileSize) MarshalText ¶ added in v1.1.0
func (s FileSize) MarshalText() ([]byte, error)
MarshalText encodes s as a human readable string.
func (*FileSize) UnmarshalText ¶ added in v1.1.0
func (s *FileSize) UnmarshalText(bs []byte) error
UnmarshalText parses a file size from bs in to s.
type KeyedMutex ¶ added in v0.10.9
type KeyedMutex struct {
// contains filtered or unexported fields
}
KeyedMutex allows to lock based on particular values
type LazyLoad ¶ added in v1.5.0
type LazyLoad[T any] struct {
// contains filtered or unexported fields
}
func NewLazyLoad ¶ added in v1.5.0
func NewLazyLoad[T any](f func() (T, error)) *LazyLoad[T]
type Mailbox ¶ added in v0.10.0
type Mailbox[T any] struct {
// contains filtered or unexported fields
}
Mailbox contains a notify channel, a mutual exclusive lock, a queue of interfaces, and a queue capacity.
func NewHighCapacityMailbox ¶ added in v1.0.0
func NewHighCapacityMailbox[T any]() *Mailbox[T]
NewHighCapacityMailbox create a new mailbox with a capacity that is better able to handle e.g. large log replays
func NewMailbox ¶ added in v0.10.0
func NewMailbox[T any](capacity uint64) *Mailbox[T]
NewMailbox creates a new mailbox instance
func (*Mailbox[T]) Deliver ¶ added in v0.10.0
func (m *Mailbox[T]) Deliver(x T) (wasOverCapacity bool)
Deliver appends to the queue
func (*Mailbox[T]) Notify ¶ added in v0.10.0
func (m *Mailbox[T]) Notify() chan struct{}
Notify returns the contents of the notify channel
func (*Mailbox[T]) Retrieve ¶ added in v0.10.0
func (m *Mailbox[T]) Retrieve() (t T, ok bool)
Retrieve fetches from the queue
func (*Mailbox[T]) RetrieveAll ¶ added in v1.9.0
func (m *Mailbox[T]) RetrieveAll() []T
func (*Mailbox[T]) RetrieveLatestAndClear ¶ added in v0.10.3
func (m *Mailbox[T]) RetrieveLatestAndClear() (t T)
RetrieveLatestAndClear returns the latest value (or nil), and clears the queue.
type PausableTicker ¶ added in v0.9.0
type PausableTicker struct {
// contains filtered or unexported fields
}
PausableTicker stores a ticker with a duration
func NewPausableTicker ¶ added in v0.9.0
func NewPausableTicker(duration time.Duration) PausableTicker
NewPausableTicker creates a new PausableTicker
func (*PausableTicker) Destroy ¶ added in v0.9.0
func (t *PausableTicker) Destroy()
Destroy pauses the PausibleTicker
func (*PausableTicker) Pause ¶ added in v0.9.0
func (t *PausableTicker) Pause()
Pause pauses a PausableTicker
type ResettableTimer ¶ added in v0.9.0
type ResettableTimer struct {
// contains filtered or unexported fields
}
ResettableTimer stores a timer
func NewResettableTimer ¶ added in v0.9.0
func NewResettableTimer() ResettableTimer
NewResettableTimer creates a new ResettableTimer
func (*ResettableTimer) Reset ¶ added in v0.9.0
func (t *ResettableTimer) Reset(duration time.Duration)
Reset stops a ResettableTimer and resets it with a new duration
type ScryptConfigReader ¶ added in v0.9.3
type ScryptConfigReader interface {
InsecureFastScrypt() bool
}
ScryptConfigReader can check for an insecure, fast flag
type ScryptParams ¶ added in v0.9.3
type ScryptParams struct{ N, P int }
ScryptParams represents two integers, N and P.
func GetScryptParams ¶ added in v0.9.3
func GetScryptParams(config ScryptConfigReader) ScryptParams
GetScryptParams fetches ScryptParams from a ScryptConfigReader
type Sleeper ¶
type Sleeper interface {
Reset()
Sleep()
After() time.Duration
Duration() time.Duration
}
Sleeper interface is used for tasks that need to be done on some interval, excluding Cron, like reconnecting.
type SleeperTask ¶ added in v0.9.3
type SleeperTask interface {
Stop() error
WakeUp()
WakeUpIfStarted()
}
SleeperTask represents a task that waits in the background to process some work.
func NewSleeperTask ¶ added in v0.9.3
func NewSleeperTask(worker Worker) SleeperTask
NewSleeperTask takes a worker and returns a SleeperTask.
SleeperTask is guaranteed to call Work on the worker at least once for every WakeUp call. If the Worker is busy when WakeUp is called, the Worker will be called again immediately after it is finished. For this reason you should take care to make sure that Worker is idempotent. WakeUp does not block.
type StartStopOnce ¶ added in v0.9.3
type StartStopOnce struct {
sync.RWMutex // lock is held during startup/shutdown, RLock is held while executing functions dependent on a particular state
// contains filtered or unexported fields
}
StartStopOnce contains a StartStopOnceState integer
func (*StartStopOnce) Healthy ¶ added in v0.10.8
func (once *StartStopOnce) Healthy() error
Healthy returns ErrNotStarted if the state is not started. Override this per-service with more specific implementations.
func (*StartStopOnce) IfNotStopped ¶ added in v1.2.0
func (once *StartStopOnce) IfNotStopped(f func()) (ok bool)
IfNotStopped runs the func and returns true if in any state other than Stopped
func (*StartStopOnce) IfStarted ¶ added in v0.10.5
func (once *StartStopOnce) IfStarted(f func()) (ok bool)
IfStarted runs the func and returns true only if started, otherwise returns false
func (*StartStopOnce) Ready ¶ added in v0.10.8
func (once *StartStopOnce) Ready() error
Ready returns ErrNotStarted if the state is not started.
func (*StartStopOnce) StartOnce ¶ added in v0.9.3
func (once *StartStopOnce) StartOnce(name string, fn func() error) error
StartOnce sets the state to Started
type StartStopOnceState ¶ added in v0.9.3
type StartStopOnceState int32
StartStopOnceState holds the state for StartStopOnce
const (
StartStopOnce_Unstarted StartStopOnceState = iota
StartStopOnce_Started
StartStopOnce_Starting
StartStopOnce_StartFailed
StartStopOnce_Stopping
StartStopOnce_Stopped
StartStopOnce_StopFailed
)
nolint
type TickerBase ¶ added in v0.10.14
type TickerBase interface {
Resume()
Pause()
Destroy()
Ticks() <-chan time.Time
}
TickerBase is an interface for pausable tickers.
type Wei ¶ added in v1.6.0
type Wei Big
Wei extends Big to implement encoding.TextMarshaler and encoding.TextUnmarshaler with support for unit suffixes.
func (Wei) MarshalText ¶ added in v1.6.0
func (w Wei) MarshalText() ([]byte, error)
func (*Wei) UnmarshalText ¶ added in v1.6.0
func (w *Wei) UnmarshalText(b []byte) error
type Worker ¶ added in v0.9.3
type Worker interface {
Work()
Name() string
}
Worker is a simple interface that represents some work to do repeatedly
func SleeperFuncTask ¶ added in v1.1.0
func SleeperFuncTask(work func(), name string) Worker
SleeperFuncTask returns a Worker to execute the given work function.