diff options
author | Valery Piashchynski <[email protected]> | 2021-04-29 19:26:35 +0300 |
---|---|---|
committer | Valery Piashchynski <[email protected]> | 2021-04-29 19:26:35 +0300 |
commit | af707e7d4d7a8fad98872e2a902e056155ad9591 (patch) | |
tree | 8f5ad1f1be443281213c4fccc1e77ca43a749f05 | |
parent | 7297e5f2fad841466024f8622da3e14b7874f989 (diff) |
- Add new interface to obtain all plugins
Signed-off-by: Valery Piashchynski <[email protected]>
-rw-r--r-- | go.mod | 4 | ||||
-rw-r--r-- | plugins/informer/interface.go | 6 | ||||
-rw-r--r-- | plugins/informer/plugin.go | 20 |
3 files changed, 23 insertions, 7 deletions
@@ -35,3 +35,7 @@ require ( golang.org/x/sync v0.0.0-20201207232520-09787c993a3a golang.org/x/sys v0.0.0-20210309074719-68d13333faf2 ) + +replace ( + github.com/spiral/endure v1.0.1 => ../endure +) diff --git a/plugins/informer/interface.go b/plugins/informer/interface.go index 45f44691..cd8ab232 100644 --- a/plugins/informer/interface.go +++ b/plugins/informer/interface.go @@ -8,3 +8,9 @@ import ( type Informer interface { Workers() []process.State } + +// Lister interface used to filter available plugins +type Lister interface { + // List gets no args, but returns list of the active plugins + List() []string +} diff --git a/plugins/informer/plugin.go b/plugins/informer/plugin.go index 98081d34..3d219cda 100644 --- a/plugins/informer/plugin.go +++ b/plugins/informer/plugin.go @@ -11,6 +11,7 @@ const PluginName = "informer" type Plugin struct { registry map[string]Informer + plugins map[string]Lister log logger.Logger } @@ -31,19 +32,24 @@ func (p *Plugin) Workers(name string) ([]process.State, error) { return svc.Workers(), nil } -// CollectTarget resettable service. -func (p *Plugin) CollectTarget(name endure.Named, r Informer) error { - p.registry[name.Name()] = r - return nil -} - // Collects declares services to be collected. func (p *Plugin) Collects() []interface{} { return []interface{}{ - p.CollectTarget, + p.CollectWorkers, } } +// CollectPlugins collects all RR plugins +func (p *Plugin) CollectPlugins(name endure.Named, l Lister) { + p.plugins[name.Name()] = l +} + +// CollectWorkers obtains plugins with workers inside. +func (p *Plugin) CollectWorkers(name endure.Named, r Informer) error { + p.registry[name.Name()] = r + return nil +} + // Name of the service. func (p *Plugin) Name() string { return PluginName |