|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- package ioswitch2
-
- import (
- "gitlink.org.cn/cloudream/common/pkgs/ioswitch/exec"
- cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
- "gitlink.org.cn/cloudream/storage/common/pkgs/storage/shard/types"
- )
-
- type From interface {
- GetDataIndex() int
- }
-
- type To interface {
- // To所需要的文件流的范围。具体含义与DataIndex有关系:
- // 如果DataIndex == -1,则表示在整个文件的范围。
- // 如果DataIndex >= 0,则表示在文件的某个分片的范围。
- GetRange() exec.Range
- GetDataIndex() int
- }
-
- type FromTos []FromTo
-
- type FromTo struct {
- Froms []From
- Toes []To
- }
-
- func NewFromTo() FromTo {
- return FromTo{}
- }
-
- func (ft *FromTo) AddFrom(from From) *FromTo {
- ft.Froms = append(ft.Froms, from)
- return ft
- }
-
- func (ft *FromTo) AddTo(to To) *FromTo {
- ft.Toes = append(ft.Toes, to)
- return ft
- }
-
- type FromDriver struct {
- Handle *exec.DriverWriteStream
- DataIndex int
- }
-
- func NewFromDriver(dataIndex int) (*FromDriver, *exec.DriverWriteStream) {
- handle := &exec.DriverWriteStream{
- RangeHint: &exec.Range{},
- }
- return &FromDriver{
- Handle: handle,
- DataIndex: dataIndex,
- }, handle
- }
-
- func (f *FromDriver) GetDataIndex() int {
- return f.DataIndex
- }
-
- type FromNode struct {
- FileHash types.FileHash
- Node cdssdk.Node
- Storage cdssdk.Storage
- DataIndex int
- }
-
- func NewFromNode(fileHash types.FileHash, node cdssdk.Node, storage cdssdk.Storage, dataIndex int) *FromNode {
- return &FromNode{
- FileHash: fileHash,
- Node: node,
- DataIndex: dataIndex,
- }
- }
-
- func (f *FromNode) GetDataIndex() int {
- return f.DataIndex
- }
-
- type ToDriver struct {
- Handle *exec.DriverReadStream
- DataIndex int
- Range exec.Range
- }
-
- func NewToDriver(dataIndex int) (*ToDriver, *exec.DriverReadStream) {
- str := exec.DriverReadStream{}
- return &ToDriver{
- Handle: &str,
- DataIndex: dataIndex,
- }, &str
- }
-
- func NewToDriverWithRange(dataIndex int, rng exec.Range) (*ToDriver, *exec.DriverReadStream) {
- str := exec.DriverReadStream{}
- return &ToDriver{
- Handle: &str,
- DataIndex: dataIndex,
- Range: rng,
- }, &str
- }
-
- func (t *ToDriver) GetDataIndex() int {
- return t.DataIndex
- }
-
- func (t *ToDriver) GetRange() exec.Range {
- return t.Range
- }
-
- type ToNode struct {
- Node cdssdk.Node
- DataIndex int
- Range exec.Range
- FileHashStoreKey string
- }
-
- func NewToNode(node cdssdk.Node, dataIndex int, fileHashStoreKey string) *ToNode {
- return &ToNode{
- Node: node,
- DataIndex: dataIndex,
- FileHashStoreKey: fileHashStoreKey,
- }
- }
-
- func NewToNodeWithRange(node cdssdk.Node, dataIndex int, fileHashStoreKey string, rng exec.Range) *ToNode {
- return &ToNode{
- Node: node,
- DataIndex: dataIndex,
- FileHashStoreKey: fileHashStoreKey,
- Range: rng,
- }
- }
-
- func (t *ToNode) GetDataIndex() int {
- return t.DataIndex
- }
-
- func (t *ToNode) GetRange() exec.Range {
- return t.Range
- }
-
- // type ToStorage struct {
- // Storage cdssdk.Storage
- // DataIndex int
- // }
-
- // func NewToStorage(storage cdssdk.Storage, dataIndex int) *ToStorage {
- // return &ToStorage{
- // Storage: storage,
- // DataIndex: dataIndex,
- // }
- // }
-
- // func (t *ToStorage) GetDataIndex() int {
- // return t.DataIndex
- // }
|