mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-21 09:28:14 +00:00
feat: 导出单插件重载到 SDK (CORE_PLUGIN_RELOAD_ONE/48 + LIST/49 + IS_DISABLED/50)
- PluginManager 接口新增 ReloadOne(name) error - cabi dispatch: case 48 单插件重载, 49 列已加载, 50 查询禁用 - 外部 SDK 新增 PluginMgrAPI(ReloadOne/ListLoadedPlugins/IsPluginDisabled) + bridge dispatchPluginMgr 注入
This commit is contained in:
@ -101,4 +101,7 @@ const (
|
||||
CoreSettingsPlugins = 45
|
||||
CoreRegisterInputCh = 46
|
||||
CoreInjectInputSync = 47
|
||||
CorePluginReloadOne = 48
|
||||
CorePluginListLoaded = 49
|
||||
CorePluginIsDisabled = 50
|
||||
)
|
||||
|
||||
@ -887,6 +887,40 @@ func go_core_dispatch(methodID C.int, ctx unsafe.Pointer, s1, s2, s3 *C.char, i1
|
||||
}
|
||||
s.RegisterInputChannel(a1, chDef)
|
||||
return 0
|
||||
|
||||
case 48: // CORE_PLUGIN_RELOAD_ONE
|
||||
if s.PluginMgr() == nil {
|
||||
setErr(errorOut, fmt.Errorf("plugin manager not available"))
|
||||
return 1
|
||||
}
|
||||
if err := s.PluginMgr().ReloadOne(a1); err != nil {
|
||||
setErr(errorOut, err)
|
||||
return 1
|
||||
}
|
||||
setResult(result, "reloaded: "+a1)
|
||||
return 0
|
||||
|
||||
case 49: // CORE_PLUGIN_LIST_LOADED
|
||||
if s.PluginMgr() == nil {
|
||||
setErr(errorOut, fmt.Errorf("plugin manager not available"))
|
||||
return 1
|
||||
}
|
||||
if b, err := json.Marshal(s.PluginMgr().ListLoadedPlugins()); err == nil {
|
||||
setResult(result, string(b))
|
||||
}
|
||||
return 0
|
||||
|
||||
case 50: // CORE_PLUGIN_IS_DISABLED
|
||||
if s.PluginMgr() == nil {
|
||||
setErr(errorOut, fmt.Errorf("plugin manager not available"))
|
||||
return 1
|
||||
}
|
||||
if s.PluginMgr().IsPluginDisabled(a1) {
|
||||
setResult(result, "1")
|
||||
} else {
|
||||
setResult(result, "0")
|
||||
}
|
||||
return 0
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
@ -74,6 +74,8 @@ type PluginManager interface {
|
||||
// onRemove 回调(RegisterOnRemoveHandler),最后从注册表移除。目录删除由调用方负责。
|
||||
RemovePlugin(name string) error
|
||||
ReloadPlugins() (string, error)
|
||||
// ReloadOne 重载单个插件(停止后重新加载,处理 dlclose/dynamic 句柄)。
|
||||
ReloadOne(name string) error
|
||||
PluginMetas() map[string]PluginMeta
|
||||
PluginDir() string
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user