mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-22 18:08:04 +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
|
CoreSettingsPlugins = 45
|
||||||
CoreRegisterInputCh = 46
|
CoreRegisterInputCh = 46
|
||||||
CoreInjectInputSync = 47
|
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)
|
s.RegisterInputChannel(a1, chDef)
|
||||||
return 0
|
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
|
return 0
|
||||||
}
|
}
|
||||||
|
|||||||
@ -74,6 +74,8 @@ type PluginManager interface {
|
|||||||
// onRemove 回调(RegisterOnRemoveHandler),最后从注册表移除。目录删除由调用方负责。
|
// onRemove 回调(RegisterOnRemoveHandler),最后从注册表移除。目录删除由调用方负责。
|
||||||
RemovePlugin(name string) error
|
RemovePlugin(name string) error
|
||||||
ReloadPlugins() (string, error)
|
ReloadPlugins() (string, error)
|
||||||
|
// ReloadOne 重载单个插件(停止后重新加载,处理 dlclose/dynamic 句柄)。
|
||||||
|
ReloadOne(name string) error
|
||||||
PluginMetas() map[string]PluginMeta
|
PluginMetas() map[string]PluginMeta
|
||||||
PluginDir() string
|
PluginDir() string
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user