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.

driver.go 1.6 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package ops
  2. import (
  3. "gitlink.org.cn/cloudream/common/utils/math2"
  4. "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/ioswitch/dag"
  5. "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/ioswitch/exec"
  6. )
  7. type FromDriverNode struct {
  8. dag.NodeBase
  9. Handle *exec.DriverWriteStream
  10. }
  11. func (b *GraphNodeBuilder) NewFromDriver(handle *exec.DriverWriteStream) *FromDriverNode {
  12. node := &FromDriverNode{
  13. Handle: handle,
  14. }
  15. b.AddNode(node)
  16. node.OutputStreams().Init(node, 1)
  17. return node
  18. }
  19. func (t *FromDriverNode) Output() dag.StreamOutputSlot {
  20. return dag.StreamOutputSlot{
  21. Node: t,
  22. Index: 0,
  23. }
  24. }
  25. func (t *FromDriverNode) GenerateOp() (exec.Op, error) {
  26. t.Handle.ID = t.OutputStreams().Get(0).VarID
  27. return nil, nil
  28. }
  29. // func (t *FromDriverType) String() string {
  30. // return fmt.Sprintf("FromDriver[]%v%v", formatStreamIO(node), formatValueIO(node))
  31. // }
  32. type ToDriverNode struct {
  33. dag.NodeBase
  34. Handle *exec.DriverReadStream
  35. Range math2.Range
  36. }
  37. func (b *GraphNodeBuilder) NewToDriver(handle *exec.DriverReadStream) *ToDriverNode {
  38. node := &ToDriverNode{
  39. Handle: handle,
  40. }
  41. b.AddNode(node)
  42. node.InputStreams().Init(1)
  43. return node
  44. }
  45. func (t *ToDriverNode) SetInput(v *dag.StreamVar) {
  46. v.To(t, 0)
  47. }
  48. func (t *ToDriverNode) Input() dag.StreamInputSlot {
  49. return dag.StreamInputSlot{
  50. Node: t,
  51. Index: 0,
  52. }
  53. }
  54. func (t *ToDriverNode) GenerateOp() (exec.Op, error) {
  55. t.Handle.ID = t.InputStreams().Get(0).VarID
  56. return nil, nil
  57. }
  58. // func (t *ToDriverType) String() string {
  59. // return fmt.Sprintf("ToDriver[%v+%v]%v%v", t.Range.Offset, t.Range.Length, formatStreamIO(node), formatValueIO(node))
  60. // }

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