115 lines
3.5 KiB
Go
115 lines
3.5 KiB
Go
package mashup
|
|
|
|
/*
|
|
import (
|
|
"fmt"
|
|
|
|
clitypes "gitlink.org.cn/cloudream/jcs-pub/client/types"
|
|
"gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/factory/reg"
|
|
"gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/types"
|
|
cortypes "gitlink.org.cn/cloudream/jcs-pub/coordinator/types"
|
|
)
|
|
|
|
func init() {
|
|
reg.RegisterBuilder[*cortypes.MashupStorageType](func(detail *clitypes.UserSpaceDetail) types.StorageBuilder {
|
|
return &builder{
|
|
detail: detail,
|
|
}
|
|
})
|
|
}
|
|
|
|
type builder struct {
|
|
detail *clitypes.UserSpaceDetail
|
|
}
|
|
|
|
func (b *builder) FeatureDesc() types.FeatureDesc {
|
|
stgType := b.detail.UserSpace.Storage.(*cortypes.MashupStorageType)
|
|
cred, ok := b.detail.UserSpace.Credential.(*cortypes.MashupCred)
|
|
if !ok {
|
|
return types.FeatureDesc{}
|
|
}
|
|
|
|
newDetail := *b.detail
|
|
newDetail.UserSpace.Storage = stgType.Store
|
|
newDetail.UserSpace.Credential = cred.Store
|
|
|
|
blder := reg.GetBuilderInternal(&newDetail)
|
|
return blder.FeatureDesc()
|
|
}
|
|
|
|
func (b *builder) CreateShardStore() (types.ShardStore, error) {
|
|
stgType := b.detail.UserSpace.Storage.(*cortypes.MashupStorageType)
|
|
cred, ok := b.detail.UserSpace.Credential.(*cortypes.MashupCred)
|
|
if !ok {
|
|
return nil, fmt.Errorf("invalid storage credential type %T for mashup storage", b.detail.UserSpace.Credential)
|
|
}
|
|
|
|
newDetail := *b.detail
|
|
newDetail.UserSpace.Storage = stgType.Store
|
|
newDetail.UserSpace.Credential = cred.Store
|
|
|
|
blder := reg.GetBuilderInternal(&newDetail)
|
|
return blder.CreateShardStore()
|
|
}
|
|
|
|
func (b *builder) CreateBaseStore() (types.BaseStore, error) {
|
|
stgType := b.detail.UserSpace.Storage.(*cortypes.MashupStorageType)
|
|
cred, ok := b.detail.UserSpace.Credential.(*cortypes.MashupCred)
|
|
if !ok {
|
|
return nil, fmt.Errorf("invalid storage credential type %T for mashup storage", b.detail.UserSpace.Credential)
|
|
}
|
|
|
|
newDetail := *b.detail
|
|
newDetail.UserSpace.Storage = stgType.Store
|
|
newDetail.UserSpace.Credential = cred.Store
|
|
|
|
blder := reg.GetBuilderInternal(&newDetail)
|
|
return blder.CreateBaseStore()
|
|
}
|
|
|
|
func (b *builder) CreateMultiparter() (types.Multiparter, error) {
|
|
stgType := b.detail.UserSpace.Storage.(*cortypes.MashupStorageType)
|
|
cred, ok := b.detail.UserSpace.Credential.(*cortypes.MashupCred)
|
|
if !ok {
|
|
return nil, fmt.Errorf("invalid storage credential type %T for mashup storage", b.detail.UserSpace.Credential)
|
|
}
|
|
|
|
newDetail := *b.detail
|
|
newDetail.UserSpace.Storage = stgType.Feature
|
|
newDetail.UserSpace.Credential = cred.Feature
|
|
|
|
blder := reg.GetBuilderInternal(&newDetail)
|
|
return blder.CreateMultiparter()
|
|
}
|
|
|
|
func (b *builder) CreateS2STransfer() (types.S2STransfer, error) {
|
|
stgType := b.detail.UserSpace.Storage.(*cortypes.MashupStorageType)
|
|
cred, ok := b.detail.UserSpace.Credential.(*cortypes.MashupCred)
|
|
if !ok {
|
|
return nil, fmt.Errorf("invalid storage credential type %T for mashup storage", b.detail.UserSpace.Credential)
|
|
}
|
|
|
|
newDetail := *b.detail
|
|
newDetail.UserSpace.Storage = stgType.Feature
|
|
newDetail.UserSpace.Credential = cred.Feature
|
|
|
|
blder := reg.GetBuilderInternal(&newDetail)
|
|
return blder.CreateS2STransfer()
|
|
}
|
|
|
|
func (b *builder) CreateECMultiplier() (types.ECMultiplier, error) {
|
|
stgType := b.detail.UserSpace.Storage.(*cortypes.MashupStorageType)
|
|
cred, ok := b.detail.UserSpace.Credential.(*cortypes.MashupCred)
|
|
if !ok {
|
|
return nil, fmt.Errorf("invalid storage credential type %T for mashup storage", b.detail.UserSpace.Credential)
|
|
}
|
|
|
|
newDetail := *b.detail
|
|
newDetail.UserSpace.Storage = stgType.Feature
|
|
newDetail.UserSpace.Credential = cred.Feature
|
|
|
|
blder := reg.GetBuilderInternal(&newDetail)
|
|
return blder.CreateECMultiplier()
|
|
}
|
|
*/
|