Documentation ¶
Index ¶
- func BatchSplit[T any](list []T, max int) (out [][]T, err error)
- func Context(t *testing.T) context.Context
- func ContextFromChan(chStop <-chan struct{}) (context.Context, context.CancelFunc)
- func ContextWithDeadlineFn(ctx context.Context, deadlineFn func(orig time.Time) time.Time) (context.Context, context.CancelFunc)
- func GetRandomPort() string
- func HashReport(ctx types.ReportContext, r types.Report) ([]byte, error)
- func IsPortOpen(t *testing.T, port string) bool
- func MustRandomPort(t *testing.T) string
- func RawReportContext(repctx types.ReportContext) [3][32]byte
- func WithJitter(d time.Duration) time.Duration
- type Duration
- func (d Duration) Duration() time.Duration
- func (d Duration) MarshalJSON() ([]byte, error)
- func (d Duration) MarshalText() ([]byte, error)
- func (d *Duration) Scan(v interface{}) (err error)
- func (d Duration) String() string
- func (d *Duration) UnmarshalJSON(input []byte) error
- func (d *Duration) UnmarshalText(input []byte) error
- func (d Duration) Value() (driver.Value, error)
- type LazyLoad
- type StartStopOnce
- func (s *StartStopOnce) Healthy() error
- func (s *StartStopOnce) IfNotStopped(f func()) (ok bool)
- func (s *StartStopOnce) IfStarted(f func()) (ok bool)
- func (s *StartStopOnce) Ready() error
- func (s *StartStopOnce) StartOnce(name string, fn func() error) error
- func (s *StartStopOnce) State() startStopOnceState
- func (s *StartStopOnce) StopOnce(name string, fn func() error) error
- type Subprocesses
- type URL
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BatchSplit ¶
BatchSplit splits an slices into an slices of slicess with a maximum length
func ContextFromChan ¶
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 ContextWithDeadlineFn ¶
func ContextWithDeadlineFn(ctx context.Context, deadlineFn func(orig time.Time) time.Time) (context.Context, context.CancelFunc)
ContextWithDeadlineFn returns a copy of the parent context with the deadline modified by deadlineFn. deadlineFn will only be called if the parent has a deadline. The new deadline must be sooner than the old to have an effect.
func GetRandomPort ¶
func GetRandomPort() string
func HashReport ¶
HashReport returns a report digest using SHA256 hash.
func MustRandomPort ¶
func RawReportContext ¶
func RawReportContext(repctx types.ReportContext) [3][32]byte
RawReportContext is a copy of evmutil.RawReportContext to avoid importing go-ethereum. github.com/GoPlugin/pluginV2Lib/libocr/offchainreporting2plus/chains/evmutil#RawReportContext
Types ¶
type Duration ¶
type Duration struct {
// contains filtered or unexported fields
}
Duration is a non-negative time duration.
func MustNewDuration ¶
func (Duration) MarshalJSON ¶
MarshalJSON implements the json.Marshaler interface.
func (Duration) MarshalText ¶
MarshalText implements the text.Marshaler interface.
func (*Duration) UnmarshalJSON ¶
UnmarshalJSON implements the json.Unmarshaler interface.
func (*Duration) UnmarshalText ¶
UnmarshalText implements the text.Unmarshaler interface.
type LazyLoad ¶
type LazyLoad[T any] struct { // contains filtered or unexported fields }
func NewLazyLoad ¶
type StartStopOnce ¶
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 can be embedded in a struct to help implement types.Service.
func (*StartStopOnce) Healthy ¶
func (s *StartStopOnce) Healthy() error
Healthy returns ErrNotStarted if the state is not started. Override this per-service with more specific implementations.
func (*StartStopOnce) IfNotStopped ¶
func (s *StartStopOnce) IfNotStopped(f func()) (ok bool)
IfNotStopped runs the func and returns true if in any state other than Stopped
func (*StartStopOnce) IfStarted ¶
func (s *StartStopOnce) IfStarted(f func()) (ok bool)
IfStarted runs the func and returns true only if started, otherwise returns false
func (*StartStopOnce) Ready ¶
func (s *StartStopOnce) Ready() error
Ready returns ErrNotStarted if the state is not started.
func (*StartStopOnce) StartOnce ¶
func (s *StartStopOnce) StartOnce(name string, fn func() error) error
StartOnce sets the state to Started
func (*StartStopOnce) State ¶
func (s *StartStopOnce) State() startStopOnceState
State retrieves the current state
type Subprocesses ¶
type Subprocesses struct {
// contains filtered or unexported fields
}
Subprocesses is an abstraction over the following pattern of sync.WaitGroup:
var wg sync.Subprocesses wg.Add(1) go func() { defer wg.Done() ... }()
Which becomes:
var subs utils.Subprocesses subs.Go(func() { ... })
Note that it's important to not call Subprocesses.Wait() when there are no `Go()`ed functions in progress. This will panic. There are two cases when this can happen: 1. all the `Go()`ed functions started before the call to `Wait()` have already returned, maybe because a system-wide error or an already cancelled context. 2. Wait() gets called before any function is executed with `Go()`.
Reusing a Subprocesses instance is discouraged. See mode details here https://pkg.go.dev/sync#WaitGroup.Add)
func (*Subprocesses) Go ¶
func (s *Subprocesses) Go(f func())
Go calls the given function in a new goroutine.
func (*Subprocesses) Wait ¶
func (s *Subprocesses) Wait()
Wait blocks until all function calls from the Go method have returned.
type URL ¶
URL extends url.URL to implement encoding.TextMarshaler.