33 lines
957 B
Go
33 lines
957 B
Go
|
|
package processors
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"context"
|
|||
|
|
"fmt"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// ProcessorRegistry 已注册处理器查询(由 CombService 实现)
|
|||
|
|
type ProcessorRegistry interface {
|
|||
|
|
GetProcessor(apiCode string) (ProcessorFunc, bool)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// InvokeRegisteredProcessor 通过注册表调用处理器(含白名单包装),聚合处理器内部转接应使用此方法。
|
|||
|
|
func InvokeRegisteredProcessor(
|
|||
|
|
ctx context.Context,
|
|||
|
|
apiCode string,
|
|||
|
|
params []byte,
|
|||
|
|
deps *ProcessorDependencies,
|
|||
|
|
) ([]byte, error) {
|
|||
|
|
if deps == nil || deps.CombService == nil {
|
|||
|
|
return nil, fmt.Errorf("CombService 未配置,无法调用处理器: %s", apiCode)
|
|||
|
|
}
|
|||
|
|
registry, ok := deps.CombService.(ProcessorRegistry)
|
|||
|
|
if !ok {
|
|||
|
|
return nil, fmt.Errorf("CombService 不支持 GetProcessor,无法调用处理器: %s", apiCode)
|
|||
|
|
}
|
|||
|
|
processor, exists := registry.GetProcessor(apiCode)
|
|||
|
|
if !exists {
|
|||
|
|
return nil, fmt.Errorf("未找到处理器: %s", apiCode)
|
|||
|
|
}
|
|||
|
|
return processor(ctx, params, deps)
|
|||
|
|
}
|