CoreInterface remodel, PluginRegistry added

This commit is contained in:
Darko Luketic
2019-01-16 05:48:01 +01:00
parent c9f3abd8b9
commit b722cb8a62
4 changed files with 265 additions and 33 deletions

47
registry.go Normal file
View File

@ -0,0 +1,47 @@
package main
type PluginRegistry struct {
CorePlugin map[string]CoreInterface
HandlerPlugin map[string]HandlerInterface
}
func NewPluginRegistry() *PluginRegistry {
r := new(PluginRegistry)
r.CorePlugin = make(map[string]CoreInterface)
r.HandlerPlugin = make(map[string]HandlerInterface)
return r
}
func (r *PluginRegistry) RegisterCorePlugin(plugin CoreInterface) error {
name, e := plugin.Register()
if e != nil {
return e
}
r.CorePlugin[name] = plugin
return nil
}
func (r *PluginRegistry) RegisterHandlerPlugin(plugin HandlerInterface) error {
name, e := plugin.Register()
if e != nil {
return e
}
r.HandlerPlugin[name] = plugin
return nil
}
func (r *PluginRegistry) GetCorePlugin(name string) CoreInterface {
return r.CorePlugin[name]
}
func (r *PluginRegistry) GetHandlerPlugin(name string) HandlerInterface {
return r.HandlerPlugin[name]
}
func (r *PluginRegistry) RemoveCorePlugin(name string) {
delete(r.CorePlugin, name)
}
func (r *PluginRegistry) RemoveHandlerPlugin(name string) {
delete(r.HandlerPlugin, name)
}