mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00

- Fixed 'G_CRITICAL' Error - Replace 'Fatal' with 'Error' - No longer write gtk2/gtk3 configure file tower: https://tower.im/projects/8f19f0bf0e754f0b82ef2c24bc230973/todos/cc84bedc05d744bd82db317829ebcfab/ Change-Id: I26d861423cac5524ef0061de569e463be4ee660b
85 lines
1.3 KiB
Go
85 lines
1.3 KiB
Go
package loader
|
|
|
|
import (
|
|
"pkg.linuxdeepin.com/lib/log"
|
|
)
|
|
|
|
var logger = log.NewLogger("dde.daemon.loader")
|
|
|
|
type Module struct {
|
|
Name string
|
|
Start func()
|
|
Stop func()
|
|
Enable bool
|
|
}
|
|
|
|
var modules = make([]*Module, 0)
|
|
|
|
func StartPlugin(plugin string) {
|
|
for _, m := range modules {
|
|
if m.Name == plugin {
|
|
m.Start()
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
func StopPlugin(plugin string) {
|
|
for _, m := range modules {
|
|
if m.Name == plugin {
|
|
m.Stop()
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
func Enable(name string, enable bool) {
|
|
for _, m := range modules {
|
|
if m.Name == name {
|
|
m.Enable = enable
|
|
}
|
|
}
|
|
}
|
|
|
|
func Register(newModule *Module) {
|
|
for _, m := range modules {
|
|
if m.Name == newModule.Name {
|
|
return
|
|
}
|
|
}
|
|
if newModule.Start == nil || newModule.Stop == nil {
|
|
logger.Error("can't register an incomplete module " + newModule.Name)
|
|
return
|
|
}
|
|
modules = append([]*Module{newModule}, modules...)
|
|
}
|
|
|
|
func Start() {
|
|
for _, m := range modules {
|
|
if !m.Enable {
|
|
continue
|
|
}
|
|
|
|
func() {
|
|
defer func() {
|
|
if err := recover(); err != nil {
|
|
logger.Error("Start module", m.Name, "failed:", err)
|
|
}
|
|
}()
|
|
m.Start()
|
|
}()
|
|
}
|
|
}
|
|
func Stop() {
|
|
for _, m := range modules {
|
|
func() {
|
|
defer func() {
|
|
if err := recover(); err != nil {
|
|
logger.Error("Stop module", m.Name, "failed:", err)
|
|
}
|
|
}()
|
|
m.Stop()
|
|
}()
|
|
}
|
|
}
|