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.

state.go 1.1 kB

1234567891011121314151617181920212223242526272829303132333435
  1. package state
  2. import (
  3. "gitlink.org.cn/cloudream/common/pkgs/ioswitch/dag"
  4. "gitlink.org.cn/cloudream/common/utils/math2"
  5. "gitlink.org.cn/cloudream/storage/common/pkgs/ioswitch2"
  6. "gitlink.org.cn/cloudream/storage/common/pkgs/ioswitch2/ops2"
  7. )
  8. type IndexedStream struct {
  9. Stream *dag.StreamVar
  10. StreamIndex ioswitch2.StreamIndex
  11. }
  12. type GenerateState struct {
  13. Ft ioswitch2.FromTo
  14. DAG *ops2.GraphNodeBuilder
  15. // 为了产生所有To所需的数据范围,而需要From打开的范围。
  16. // 这个范围是基于整个文件的,且上下界都取整到条带大小的整数倍,因此上界是有可能超过文件大小的。
  17. ToNodes map[ioswitch2.To]ops2.ToNode
  18. FromNodes map[ioswitch2.From]ops2.FromNode
  19. IndexedStreams []IndexedStream
  20. StreamRange math2.Range
  21. UseEC bool // 是否使用纠删码
  22. UseSegment bool // 是否使用分段
  23. }
  24. func InitGenerateState(ft ioswitch2.FromTo) *GenerateState {
  25. return &GenerateState{
  26. Ft: ft,
  27. DAG: ops2.NewGraphNodeBuilder(),
  28. ToNodes: make(map[ioswitch2.To]ops2.ToNode),
  29. FromNodes: make(map[ioswitch2.From]ops2.FromNode),
  30. }
  31. }

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