Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var Bootstrap = fx.Provide(NewLifecycle)
Bootstrap can be used as an alias for must have provider options composed into one fx option.
Functions ¶
func NewLifecycle ¶
NewLifecycle creates a new lifecycle required by all constructors providing closers. It requires an fx.Lifecycle instance to register OnStart and OnStop hooks in.
Types ¶
type App ¶ added in v0.12.0
App wraps the original fx.App instance and adds a closer method to it.
type ApplicationInfo ¶ added in v0.15.0
ApplicationInfo is an optional set of information that can be set by the runtime environment (eg. console application).
type Closer ¶
type Closer interface {
Close() error
}
Closer is the interface modelled after io.Closer for post-shutdown cleanups.
type Hook ¶
type Hook struct {
OnStart func(context.Context) error
OnStop func(context.Context) error
OnClose func() error
}
Hook is a set of callbacks extending fx.Hook. It adds an OnClose hook which allows post-shutdown cleanups.
type Lifecycle ¶
type Lifecycle interface {
Append(Hook)
}
Lifecycle extends fx.Lifecycle by adding the extra OnClose in Hook.
Example ¶
package main
import (
"fmt"
"github.com/goph/fxt"
"go.uber.org/fx"
)
func main() {
var ctx struct {
Closer fxt.Closer
}
type A struct{}
fx.New(
fx.Provide(fxt.NewLifecycle),
fx.Provide(func(l fxt.Lifecycle) *A {
l.Append(fxt.Hook{
// OnStart and OnStop are valid fx hooks as well.
OnClose: func() error {
fmt.Print("closing")
return nil
},
})
return &A{}
}),
fx.Extract(&ctx),
fx.Invoke(func(a *A) {}),
fx.NopLogger,
)
defer ctx.Closer.Close()
}
Output: closing