EasyAudioEncode/internal/web/api/grpc_plugin.go

41 lines
1002 B
Go
Raw Normal View History

2025-12-25 17:01:46 +08:00
package api
import (
"easyaudioencode/internal/core/host"
"easyaudioencode/internal/core/media"
"encoding/json"
"log/slog"
)
type PluginGRPC struct {
Core *host.Core
Media *media.Core
uc *Usecase
}
func NewPluginGRPC(core *host.Core, mediaCore *media.Core, uc *Usecase) *PluginGRPC {
return &PluginGRPC{
Core: core,
Media: mediaCore,
uc: uc,
}
}
// 与Host刚建立连接就会通信如果回调函数放在了API层来不及注册回调影响通信
func RegisterPluginGRPC(hostCore *host.Core, mediaCore *media.Core, uc *Usecase) {
hostGRPC := NewPluginGRPC(hostCore, mediaCore, uc)
plugin := hostCore.Plugin
plugin.AddResponseHandler("start", hostGRPC.start)
// 这部分是主动处理Host的请求
}
func (pg PluginGRPC) start(requestID string, args json.RawMessage) (interface{}, error) {
slog.Info("Received 'start' from host", "request_id", requestID, "args", args)
return map[string]interface{}{
"status": "started",
"task": "task",
}, nil
}