Versions in this module Expand all Collapse all v1 v1.0.0 Feb 19, 2023 Changes in this version + var ErrNotExist = errors.New("symbol does not exist") + type Details map[string]string + func (d Details) String() string + type Option func(mgr *PluginManagerSwapper) + func WithExtensionNewer(newExt func() interface{}) Option + func WithFreeDelay(d time.Duration) Option + func WithLogger(log slog.Logger) Option + func WithReloadCallback(cb ReloadCallback) Option + func WithStaticPlugins(plugins map[string]*StaticPlugin) Option + func WithWhitelist(pluginNames ...string) Option + type Plugin struct + Deps []string + File string + FileSha1 [sha1.Size]byte + Name string + Note string + P *plugin.Plugin + Refs *atomic.Int64 + When time.Time + func (pl *Plugin) Lookup(symName string, out interface{}) error + type PluginFuncs struct + InvokeFunc func(name string, params ...interface{}) (interface{}, error) + func NewPluginFuncs(fExport func() interface{}, hotswapLiveFuncs func() map[string]interface{}, ...) PluginFuncs + type PluginManager struct + func (pm *PluginManager) FindPlugin(name string) *Plugin + func (pm *PluginManager) InvokeEach(name string, params ...interface{}) + func (pm *PluginManager) InvokeEachBackward(name string, params ...interface{}) + func (pm *PluginManager) Plugins() []*Plugin + type PluginManagerSwapper struct + func NewPluginManagerSwapper(pluginDir string, opts ...Option) *PluginManagerSwapper + func (sw *PluginManagerSwapper) Current() *PluginManager + func (sw *PluginManagerSwapper) LoadPlugins(data interface{}) (Details, error) + func (sw *PluginManagerSwapper) Reload(data interface{}) (Details, error) + func (sw *PluginManagerSwapper) ReloadCounter() int64 + func (sw *PluginManagerSwapper) ReloadWithCallback(data interface{}, extra ReloadCallback) (Details, error) + func (sw *PluginManagerSwapper) StaticLinkingMode() bool + type ReloadCallback func(newManager, oldManager *PluginManager) error + type StaticPlugin struct + Name string