Initial checkin of templ skeleton
HTML based on Jason Knight HTML template code
This commit is contained in:
67
internal/util/egctx.go
Normal file
67
internal/util/egctx.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
type ErrGroupSharedCtx struct {
|
||||
eg *errgroup.Group
|
||||
ctx context.Context
|
||||
}
|
||||
|
||||
type CtxErrFunc func(ctx context.Context) error
|
||||
|
||||
func NewErrGroupSharedCtx(ctx context.Context, funcs ...CtxErrFunc) *ErrGroupSharedCtx {
|
||||
eg, ctx := errgroup.WithContext(ctx)
|
||||
|
||||
egCtx := &ErrGroupSharedCtx{
|
||||
eg: eg,
|
||||
ctx: ctx,
|
||||
}
|
||||
|
||||
egCtx.Go(funcs...)
|
||||
|
||||
return egCtx
|
||||
}
|
||||
|
||||
func (egc *ErrGroupSharedCtx) Go(funcs ...CtxErrFunc) {
|
||||
for _, f := range funcs {
|
||||
fn := f
|
||||
egc.eg.Go(func() error {
|
||||
return fn(egc.ctx)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (egc *ErrGroupSharedCtx) Wait() error {
|
||||
return egc.eg.Wait()
|
||||
}
|
||||
|
||||
type ErrGroupSeparateCtx struct {
|
||||
eg *errgroup.Group
|
||||
}
|
||||
|
||||
func NewErrGroupSeparateCtx() *ErrGroupSeparateCtx {
|
||||
eg := &errgroup.Group{}
|
||||
|
||||
egCtx := &ErrGroupSeparateCtx{
|
||||
eg: eg,
|
||||
}
|
||||
|
||||
return egCtx
|
||||
}
|
||||
|
||||
func (egc *ErrGroupSeparateCtx) Go(ctx context.Context, funcs ...CtxErrFunc) {
|
||||
for _, f := range funcs {
|
||||
fn := f
|
||||
egc.eg.Go(func() error {
|
||||
return fn(ctx)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (egc *ErrGroupSeparateCtx) Wait() error {
|
||||
return egc.eg.Wait()
|
||||
}
|
Reference in New Issue
Block a user