Documentation ¶
Overview ¶
Package lifecycler helps Caddy modules manage the life cycle of submodules.
Index ¶
- type CaddyfileInfo
- type LifeCyclable
- type LifeCycler
- func (l *LifeCycler[T]) Cleanup() (err error)
- func (*LifeCycler[T]) MarshalJSON() ([]byte, error)
- func (l *LifeCycler[T]) Provision(ctx caddy.Context, info *ProvisionInfo) error
- func (l *LifeCycler[T]) SetValue(v T)
- func (l *LifeCycler[T]) Start() error
- func (l *LifeCycler[T]) UnmarshalCaddyfile(d *caddyfile.Dispenser, info *CaddyfileInfo) error
- func (*LifeCycler[T]) UnmarshalJSON([]byte) error
- type ProvisionInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CaddyfileInfo ¶
type CaddyfileInfo struct { ModuleID []string // module.id.path. with dot at end if required Raw *[]json.RawMessage // Where the raw config of submodules will be appended to SubModuleSpecifier string // The specifier used by caddy to determine the submodule. ParseVerbLine caddyfile.Unmarshaler // An optional [caddyfile.Unmarshaler]. If specified will be used to decode the second item on the first line of the config. }
CaddyfileInfo is used to help unmarshal a caddyfile.
type LifeCyclable ¶
LifeCyclable is a submodule that can be started.
type LifeCycler ¶
type LifeCycler[T any] struct { V T // Value passed to submodules Modules []LifeCyclable[T] // Unstarted submodules Started []LifeCyclable[T] // Started submodules }
LifeCycler assists with loading submodules and maintaining their lifecycle.
func (*LifeCycler[T]) Cleanup ¶ added in v0.0.3
func (l *LifeCycler[T]) Cleanup() (err error)
Cleanup clears the lifecycler struct to help the GC. Any caddy submodules will be cleaned up by caddy.
func (*LifeCycler[T]) MarshalJSON ¶
func (*LifeCycler[T]) MarshalJSON() ([]byte, error)
MarshalJSON returns an error preventing LifeCycler from being used in configuration.
func (*LifeCycler[T]) Provision ¶
func (l *LifeCycler[T]) Provision(ctx caddy.Context, info *ProvisionInfo) error
Provision loads submodules from the config. `info` must not be nil and the `Raw` field must be set.
func (*LifeCycler[T]) SetValue ¶
func (l *LifeCycler[T]) SetValue(v T)
SetValue sets the internal value that will be passed to submodules.
func (*LifeCycler[T]) Start ¶
func (l *LifeCycler[T]) Start() error
Start starts submodules and passes the stored value into them.
func (*LifeCycler[T]) UnmarshalCaddyfile ¶
func (l *LifeCycler[T]) UnmarshalCaddyfile(d *caddyfile.Dispenser, info *CaddyfileInfo) error
UnmarshalCaddyfile unmarshals a module from a caddyfile. `info` must not be nil and must have the `raw` and `SubModuleSpecifier` fields set.
{ <verb> [rest of line] { <submodule name> <submodule config> } }
func (*LifeCycler[T]) UnmarshalJSON ¶
func (*LifeCycler[T]) UnmarshalJSON([]byte) error
UnmarshalJSON returns an error preventing LifeCycler from being used in configuration.
type ProvisionInfo ¶
type ProvisionInfo struct { StructPointer any // Pointer to the struct to load config into FieldName string // Name of the field that config will be loaded into Raw *[]json.RawMessage // Pointer to the array that config will be loaded into }
ProvisionInfo is used to help with caddy provisioning.