Documentation
¶
Index ¶
- func IsCircuitOpenError(err error) bool
- func IsFuncNotFoundError(err error) bool
- func IsPluginNotFoundError(err error) bool
- func IsPluginTimeoutError(err error) bool
- func ValidateConfig(config *Config) error
- type Bureau
- type CircuitBreaker
- type CircuitBreakerConfig
- type CircuitState
- type Config
- type DefaultLogger
- type ErrCircuitBreakerOpen
- type ErrCircuitOpen
- type ErrFuncNotFound
- type ErrPluginExists
- type ErrPluginFree
- type ErrPluginInit
- type ErrPluginNotFound
- type ErrPluginTimeout
- type InvokeFunc
- type Loader
- type LogLevel
- type Logger
- type Manager
- func (m *Manager) Call(ctx context.Context, pluginName, funcName string, args ...interface{}) (interface{}, error)
- func (m *Manager) Close() error
- func (m *Manager) DisableMetrics()
- func (m *Manager) EnableMetrics()
- func (m *Manager) GetBreakerStatus(pluginName string) bool
- func (m *Manager) GetMetrics(pluginName string) (*PluginMethodMetrics, error)
- func (m *Manager) GetPluginFunctions(pluginName string) ([]string, error)
- func (m *Manager) GetPluginPath(name string) (string, bool)
- func (m *Manager) IsCircuitBreakerOpen(pluginName string) bool
- func (m *Manager) IsMetricsEnabled() bool
- func (m *Manager) ListPlugins() []PluginInfo
- func (m *Manager) LoadPlugin(path string) error
- func (m *Manager) LoadPluginWithConfig(path string, config *PluginSpecificConfig) error
- func (m *Manager) ResetMetrics()
- type ManagerOption
- type MethodMetrics
- type Plugin
- func (p *Plugin) AddRef()
- func (p *Plugin) Call(ctx context.Context, name string, args ...interface{}) (interface{}, error)
- func (p *Plugin) DecRef() bool
- func (p *Plugin) Free() error
- func (p *Plugin) GetFunctions() []string
- func (p *Plugin) GetRefs() int32
- func (p *Plugin) Init(args ...interface{}) error
- func (p *Plugin) Name() string
- func (p *Plugin) RegisterFunc(name string, fn InvokeFunc)
- func (p *Plugin) Version() string
- type PluginInfo
- type PluginInstance
- type PluginMethodMetrics
- type PluginMetrics
- func (m *PluginMetrics) AddPlugin(pluginName string)
- func (m *PluginMetrics) GetPluginMetrics(pluginName string) (*PluginMethodMetrics, error)
- func (m *PluginMetrics) IsEnabled() bool
- func (m *PluginMetrics) RecordMetric(pluginName, funcName string, duration time.Duration)
- func (m *PluginMetrics) SetEnabled(enabled bool)
- type PluginSpecificConfig
- type PluginState
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsCircuitOpenError ¶
IsCircuitOpenError checks if the error is a circuit breaker open error
func IsFuncNotFoundError ¶
IsFuncNotFoundError checks if the error is a function not found error
func IsPluginNotFoundError ¶
IsPluginNotFoundError checks if the error is a plugin not found error
func IsPluginTimeoutError ¶
IsPluginTimeoutError checks if the error is a plugin timeout error
func ValidateConfig ¶
ValidateConfig validates the configuration to ensure it is valid
Types ¶
type CircuitBreaker ¶
type CircuitBreaker struct {
// contains filtered or unexported fields
}
CircuitBreaker implements the circuit breaker pattern
func NewCircuitBreaker ¶
func NewCircuitBreaker(ctx context.Context, config CircuitBreakerConfig, logger Logger) *CircuitBreaker
func (*CircuitBreaker) Allow ¶
func (cb *CircuitBreaker) Allow() bool
func (*CircuitBreaker) Close ¶
func (cb *CircuitBreaker) Close()
func (*CircuitBreaker) RecordFailure ¶
func (cb *CircuitBreaker) RecordFailure()
func (*CircuitBreaker) RecordSuccess ¶
func (cb *CircuitBreaker) RecordSuccess()
func (*CircuitBreaker) State ¶
func (cb *CircuitBreaker) State() CircuitState
type CircuitBreakerConfig ¶
type CircuitBreakerConfig struct {
Enabled bool
MaxFailures int
ResetInterval time.Duration
TimeoutDuration time.Duration
}
CircuitBreakerConfig defines configuration for the circuit breaker
func DefaultCircuitBreakerConfig ¶
func DefaultCircuitBreakerConfig() CircuitBreakerConfig
DefaultCircuitBreakerConfig returns the default circuit breaker configuration
type CircuitState ¶
type CircuitState int32
const ( StateClosed CircuitState = 0 StateOpen CircuitState = 1 StateHalfOpen CircuitState = 2 )
type Config ¶
type Config struct {
PluginDir string
AllowHotReload bool
LogLevel LogLevel
EnableMetrics bool
DefaultPluginConfig PluginSpecificConfig
PluginConfigs map[string]PluginSpecificConfig
}
Config defines the configuration for plugin manager
func DefaultConfig ¶
func DefaultConfig() *Config
DefaultConfig returns the default plugin manager configuration
func (*Config) GetPluginConfig ¶
func (c *Config) GetPluginConfig(pluginName string) PluginSpecificConfig
GetPluginConfig gets the plugin configuration, returning the default configuration if no specific configuration is provided
type DefaultLogger ¶
type DefaultLogger struct {
// contains filtered or unexported fields
}
DefaultLogger provides a basic implementation of the Logger interface
func NewDefaultLogger ¶
func NewDefaultLogger(level LogLevel) *DefaultLogger
NewDefaultLogger creates a default logger implementation
func (*DefaultLogger) Debug ¶
func (l *DefaultLogger) Debug(msg string, args ...interface{})
func (*DefaultLogger) Error ¶
func (l *DefaultLogger) Error(msg string, args ...interface{})
func (*DefaultLogger) Info ¶
func (l *DefaultLogger) Info(msg string, args ...interface{})
func (*DefaultLogger) Warn ¶
func (l *DefaultLogger) Warn(msg string, args ...interface{})
type ErrCircuitBreakerOpen ¶
type ErrCircuitBreakerOpen struct {
Name string
}
ErrCircuitBreakerOpen represents a circuit breaker open error
func (*ErrCircuitBreakerOpen) Error ¶
func (e *ErrCircuitBreakerOpen) Error() string
type ErrCircuitOpen ¶
type ErrCircuitOpen struct {
Name string
}
ErrCircuitOpen represents an error when the circuit breaker is open
func (ErrCircuitOpen) Error ¶
func (e ErrCircuitOpen) Error() string
type ErrFuncNotFound ¶
type ErrFuncNotFound struct {
Name string
}
ErrFuncNotFound represents an error when a function cannot be found
func (ErrFuncNotFound) Error ¶
func (e ErrFuncNotFound) Error() string
type ErrPluginExists ¶
type ErrPluginExists struct {
Name string
}
ErrPluginExists represents an error when a plugin already exists
func (ErrPluginExists) Error ¶
func (e ErrPluginExists) Error() string
type ErrPluginFree ¶
ErrPluginFree represents an error during plugin cleanup
func (ErrPluginFree) Error ¶
func (e ErrPluginFree) Error() string
type ErrPluginInit ¶
ErrPluginInit represents an error during plugin initialization
func (ErrPluginInit) Error ¶
func (e ErrPluginInit) Error() string
type ErrPluginNotFound ¶
type ErrPluginNotFound struct {
Name string
}
ErrPluginNotFound represents an error when a plugin cannot be found
func (ErrPluginNotFound) Error ¶
func (e ErrPluginNotFound) Error() string
type ErrPluginTimeout ¶
type ErrPluginTimeout struct {
Name string
}
ErrPluginTimeout represents an error when a plugin operation times out
func (ErrPluginTimeout) Error ¶
func (e ErrPluginTimeout) Error() string
type InvokeFunc ¶
InvokeFunc represents a plugin function with a context as its first parameter
type Loader ¶
type Loader struct {
// contains filtered or unexported fields
}
Loader handles plugin loading and validation
type Logger ¶
type Logger interface {
Debug(msg string, args ...interface{})
Info(msg string, args ...interface{})
Warn(msg string, args ...interface{})
Error(msg string, args ...interface{})
}
Logger defines the interface for plugin logging
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager handles plugin lifecycle and operations
func NewManager ¶
NewManager creates a new plugin manager
func (*Manager) Call ¶
func (m *Manager) Call(ctx context.Context, pluginName, funcName string, args ...interface{}) (interface{}, error)
Call invokes a plugin function with the given arguments
func (*Manager) DisableMetrics ¶
func (m *Manager) DisableMetrics()
DisableMetrics disables metrics collection
func (*Manager) EnableMetrics ¶
func (m *Manager) EnableMetrics()
EnableMetrics enables metrics collection
func (*Manager) GetBreakerStatus ¶
func (*Manager) GetMetrics ¶
func (m *Manager) GetMetrics(pluginName string) (*PluginMethodMetrics, error)
GetMetrics returns metrics for a specific plugin
func (*Manager) GetPluginFunctions ¶
GetPluginFunctions returns a list of available functions for a plugin
func (*Manager) GetPluginPath ¶
GetPluginPath returns the path of a loaded plugin
func (*Manager) IsCircuitBreakerOpen ¶
IsCircuitBreakerOpen checks if the circuit breaker is open for a plugin
func (*Manager) IsMetricsEnabled ¶
IsMetricsEnabled returns whether metrics collection is enabled
func (*Manager) ListPlugins ¶
func (m *Manager) ListPlugins() []PluginInfo
ListPlugins returns a list of all loaded plugins
func (*Manager) LoadPlugin ¶
LoadPlugin loads a plugin from the specified path
func (*Manager) LoadPluginWithConfig ¶
func (m *Manager) LoadPluginWithConfig(path string, config *PluginSpecificConfig) error
LoadPluginWithConfig loads a plugin with specific configuration
type ManagerOption ¶
type ManagerOption func(*Manager)
ManagerOption defines a function type for configuring Manager
func WithLogger ¶
func WithLogger(logger Logger) ManagerOption
WithLogger sets an external logger implementation
type MethodMetrics ¶
type MethodMetrics struct {
Count atomic.Int64
TotalTime atomic.Int64 // save nanoseconds
MinTime atomic.Int64 // save nanoseconds
MaxTime atomic.Int64 // save nanoseconds
}
MethodMetrics stores metrics for a single method using atomic operations
type Plugin ¶
Plugin wraps a plugin instance
func (*Plugin) GetFunctions ¶
GetFunctions returns a list of available functions
func (*Plugin) RegisterFunc ¶
func (p *Plugin) RegisterFunc(name string, fn InvokeFunc)
type PluginInfo ¶
type PluginInfo struct {
Name string
Version string
State PluginState
RefCount int32
Path string
}
PluginInfo contains basic information about a loaded plugin
type PluginInstance ¶
type PluginInstance struct {
*Plugin
// contains filtered or unexported fields
}
PluginInstance wraps a plugin with additional metadata
func (*PluginInstance) GetFunctions ¶
func (pi *PluginInstance) GetFunctions() []string
GetFunctions returns a list of available functions
type PluginMethodMetrics ¶
PluginMethodMetrics stores metrics for plugin methods
type PluginMetrics ¶
type PluginMetrics struct {
// contains filtered or unexported fields
}
PluginMetrics stores metrics for plugin calls
func NewPluginMetrics ¶
func NewPluginMetrics(enabled bool) *PluginMetrics
NewPluginMetrics creates a new plugin metrics collector
func (*PluginMetrics) AddPlugin ¶
func (m *PluginMetrics) AddPlugin(pluginName string)
AddPlugin adds a new plugin metrics record
func (*PluginMetrics) GetPluginMetrics ¶
func (m *PluginMetrics) GetPluginMetrics(pluginName string) (*PluginMethodMetrics, error)
GetPluginMetrics returns metrics for a specific plugin
func (*PluginMetrics) IsEnabled ¶
func (m *PluginMetrics) IsEnabled() bool
IsEnabled returns the enabled state
func (*PluginMetrics) RecordMetric ¶
func (m *PluginMetrics) RecordMetric(pluginName, funcName string, duration time.Duration)
RecordMetric records a single method call
func (*PluginMetrics) SetEnabled ¶
func (m *PluginMetrics) SetEnabled(enabled bool)
SetEnabled sets the enabled state
type PluginSpecificConfig ¶
type PluginSpecificConfig struct {
InitArgs []interface{}
CircuitBreaker CircuitBreakerConfig
MaxConcurrentCalls int
PluginTimeout time.Duration
Options map[string]interface{}
}
PluginSpecificConfig defines configuration for a specific plugin
func DefaultPluginSpecificConfig ¶
func DefaultPluginSpecificConfig() PluginSpecificConfig
DefaultPluginSpecificConfig returns the default plugin specific configuration
type PluginState ¶
type PluginState int
PluginState represents the state of a plugin
const ( StateActive PluginState = iota StateDeprecated )