package coordinator import ( "gitlink.org.cn/cloudream/common/pkgs/mq" cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" stgmod "gitlink.org.cn/cloudream/storage/common/models" "gitlink.org.cn/cloudream/storage/common/pkgs/db/model" ) type ObjectService interface { GetPackageObjects(msg *GetPackageObjects) (*GetPackageObjectsResp, *mq.CodeMessage) GetPackageObjectDetails(msg *GetPackageObjectDetails) (*GetPackageObjectDetailsResp, *mq.CodeMessage) ChangeObjectRedundancy(msg *ChangeObjectRedundancy) (*ChangeObjectRedundancyResp, *mq.CodeMessage) } // 查询Package中的所有Object,返回的Objects会按照ObjectID升序 var _ = Register(Service.GetPackageObjects) type GetPackageObjects struct { mq.MessageBodyBase UserID cdssdk.UserID `json:"userID"` PackageID cdssdk.PackageID `json:"packageID"` } type GetPackageObjectsResp struct { mq.MessageBodyBase Objects []model.Object `json:"objects"` } func NewGetPackageObjects(userID cdssdk.UserID, packageID cdssdk.PackageID) *GetPackageObjects { return &GetPackageObjects{ UserID: userID, PackageID: packageID, } } func NewGetPackageObjectsResp(objects []model.Object) *GetPackageObjectsResp { return &GetPackageObjectsResp{ Objects: objects, } } func (client *Client) GetPackageObjects(msg *GetPackageObjects) (*GetPackageObjectsResp, error) { return mq.Request(Service.GetPackageObjects, client.rabbitCli, msg) } // 获取Package中所有Object以及它们的分块详细信息,返回的Objects会按照ObjectID升序 var _ = Register(Service.GetPackageObjectDetails) type GetPackageObjectDetails struct { mq.MessageBodyBase PackageID cdssdk.PackageID `json:"packageID"` } type GetPackageObjectDetailsResp struct { mq.MessageBodyBase Objects []stgmod.ObjectDetail `json:"objects"` } func NewGetPackageObjectDetails(packageID cdssdk.PackageID) *GetPackageObjectDetails { return &GetPackageObjectDetails{ PackageID: packageID, } } func NewGetPackageObjectDetailsResp(objects []stgmod.ObjectDetail) *GetPackageObjectDetailsResp { return &GetPackageObjectDetailsResp{ Objects: objects, } } func (client *Client) GetPackageObjectDetails(msg *GetPackageObjectDetails) (*GetPackageObjectDetailsResp, error) { return mq.Request(Service.GetPackageObjectDetails, client.rabbitCli, msg) } // 更新Object的冗余方式 var _ = Register(Service.ChangeObjectRedundancy) type ChangeObjectRedundancy struct { mq.MessageBodyBase Entries []ChangeObjectRedundancyEntry `json:"entries"` } type ChangeObjectRedundancyResp struct { mq.MessageBodyBase } type ChangeObjectRedundancyEntry struct { ObjectID cdssdk.ObjectID `json:"objectID"` Redundancy cdssdk.Redundancy `json:"redundancy"` PinnedAt []cdssdk.NodeID `json:"pinnedAt"` Blocks []stgmod.ObjectBlock `json:"blocks"` } func ReqChangeObjectRedundancy(entries []ChangeObjectRedundancyEntry) *ChangeObjectRedundancy { return &ChangeObjectRedundancy{ Entries: entries, } } func RespChangeObjectRedundancy() *ChangeObjectRedundancyResp { return &ChangeObjectRedundancyResp{} } func (client *Client) ChangeObjectRedundancy(msg *ChangeObjectRedundancy) (*ChangeObjectRedundancyResp, error) { return mq.Request(Service.ChangeObjectRedundancy, client.rabbitCli, msg) }