41 lines
1002 B
Go
41 lines
1002 B
Go
|
|
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
|
|||
|
|
}
|