forked from pneymrl2f/nightingale
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1011 B
53 lines
1011 B
package plugins
|
|
|
|
type Plugin struct {
|
|
FilePath string
|
|
Params string
|
|
Env string
|
|
Stdin string
|
|
MTime int64
|
|
Cycle int
|
|
}
|
|
|
|
var (
|
|
Plugins = make(map[string]*Plugin)
|
|
PluginsWithScheduler = make(map[string]*PluginScheduler)
|
|
)
|
|
|
|
func DelNoUsePlugins(newPlugins map[string]*Plugin) {
|
|
for currKey, currPlugin := range Plugins {
|
|
newPlugin, ok := newPlugins[currKey]
|
|
if !ok || currPlugin.MTime != newPlugin.MTime {
|
|
deletePlugin(currKey)
|
|
}
|
|
}
|
|
}
|
|
|
|
func AddNewPlugins(newPlugins map[string]*Plugin) {
|
|
for key, newPlugin := range newPlugins {
|
|
if _, ok := Plugins[key]; ok && newPlugin.MTime == Plugins[key].MTime {
|
|
continue
|
|
}
|
|
|
|
Plugins[key] = newPlugin
|
|
sch := NewPluginScheduler(newPlugin)
|
|
PluginsWithScheduler[key] = sch
|
|
sch.Schedule()
|
|
}
|
|
}
|
|
|
|
func ClearAllPlugins() {
|
|
for k := range Plugins {
|
|
deletePlugin(k)
|
|
}
|
|
}
|
|
|
|
func deletePlugin(key string) {
|
|
v, ok := PluginsWithScheduler[key]
|
|
if ok {
|
|
v.Stop()
|
|
delete(PluginsWithScheduler, key)
|
|
}
|
|
delete(Plugins, key)
|
|
}
|