You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

faas.go 1.9 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package ops2
  2. /*
  3. import (
  4. "fmt"
  5. "github.com/samber/lo"
  6. "gitlink.org.cn/cloudream/common/pkgs/ioswitch/exec"
  7. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  8. "gitlink.org.cn/cloudream/storage/common/pkgs/storage/agtpool"
  9. "gitlink.org.cn/cloudream/storage/common/pkgs/storage/types"
  10. )
  11. type InternalFaaSGalMultiply struct {
  12. Coefs [][]byte `json:"coefs"`
  13. InputFilePathes []exec.VarID `json:"inputFilePathes"` // 输入的文件的路径
  14. OutputFilePathes []exec.VarID `json:"outputFilePathes"` // 输出的文件的路径
  15. ChunkSize int `json:"chunkSize"`
  16. StorageID cdssdk.StorageID `json:"storageID"`
  17. }
  18. func (o *InternalFaaSGalMultiply) Execute(ctx *exec.ExecContext, e *exec.Executor) error {
  19. stgAgts, err := exec.GetValueByType[*agtpool.AgentPool](ctx)
  20. if err != nil {
  21. return err
  22. }
  23. fass, err := agtpool.GetComponent[types.InternalFaaSCall](stgAgts, o.StorageID)
  24. if err != nil {
  25. return fmt.Errorf("getting faas component: %w", err)
  26. }
  27. tmp, err := agtpool.GetComponent[types.TempStore](stgAgts, o.StorageID)
  28. if err != nil {
  29. return fmt.Errorf("getting temp store component: %w", err)
  30. }
  31. inputVars, err := exec.BindArray[*exec.StringValue](e, ctx.Context, o.InputFilePathes)
  32. if err != nil {
  33. return err
  34. }
  35. var outputs []string
  36. for i := 0; i < len(o.OutputFilePathes); i++ {
  37. outputs = append(outputs, tmp.CreateTemp())
  38. }
  39. var outputVars []*exec.StringValue
  40. for _, output := range outputs {
  41. outputVars = append(outputVars, &exec.StringValue{Value: output})
  42. }
  43. inputs := lo.Map(inputVars, func(v *exec.StringValue, idx int) string { return v.Value })
  44. err = fass.GalMultiply(ctx.Context, o.Coefs, inputs, outputs, o.ChunkSize)
  45. if err != nil {
  46. return fmt.Errorf("faas gal multiply: %w", err)
  47. }
  48. exec.PutArray(e, o.OutputFilePathes, outputVars)
  49. return nil
  50. }
  51. */

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。