From d6e7d3368947c7d1e7153069c1f14f3532b0c76e Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Fri, 21 Apr 2023 16:33:20 +0800 Subject: [PATCH] =?UTF-8?q?Move=E5=91=BD=E4=BB=A4=E4=BD=BF=E7=94=A8ID?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=93=8D=E4=BD=9C=EF=BC=9B=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E5=90=84=E7=A7=8D=E5=91=BD=E4=BB=A4=E4=B8=AD=E4=B8=8D=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client_command.go | 12 ++++++------ client_command_ec.go | 2 +- main.go | 30 +++++++++++++++++------------- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/client_command.go b/client_command.go index 1c99cb7..06866d1 100644 --- a/client_command.go +++ b/client_command.go @@ -22,7 +22,7 @@ import ( "google.golang.org/grpc/credentials/insecure" ) -func Read(localFilePath string, bucketID int, objectID int) error { +func Read(localFilePath string, objectID int) error { // TODO 此处是写死的常量 userId := 0 @@ -33,7 +33,7 @@ func Read(localFilePath string, bucketID int, objectID int) error { } defer coorClient.Close() - readResp, err := coorClient.Read(bucketID, objectID, userId) + readResp, err := coorClient.Read(objectID, userId) if err != nil { return fmt.Errorf("request to coordinator failed, err: %w", err) } @@ -340,7 +340,7 @@ func sendFinish(numRep int, senders []fileSender) { } } -func Move(bucketName string, objectName string, stgID int) error { +func Move(objectID int, stgID int) error { // TODO 此处是写死的常量 userId := 0 @@ -351,7 +351,7 @@ func Move(bucketName string, objectName string, stgID int) error { } defer coorClient.Close() - moveResp, err := coorClient.Move(bucketName, objectName, userId, stgID) + moveResp, err := coorClient.Move(objectID, stgID, userId) if err != nil { return fmt.Errorf("request to coordinator failed, err: %w", err) } @@ -368,7 +368,7 @@ func Move(bucketName string, objectName string, stgID int) error { switch moveResp.Redundancy { case consts.REDUNDANCY_REP: - agentMoveResp, err := agentClient.RepMove(moveResp.Directory, moveResp.Hashes, bucketName, objectName, userId, moveResp.FileSizeInBytes) + agentMoveResp, err := agentClient.RepMove(moveResp.Directory, moveResp.Hashes, objectID, userId, moveResp.FileSizeInBytes) if err != nil { return fmt.Errorf("request to agent %d failed, err: %w", stgID, err) } @@ -377,7 +377,7 @@ func Move(bucketName string, objectName string, stgID int) error { } case consts.REDUNDANCY_EC: - agentMoveResp, err := agentClient.ECMove(moveResp.Directory, moveResp.Hashes, moveResp.IDs, *moveResp.ECName, bucketName, objectName, userId, moveResp.FileSizeInBytes) + agentMoveResp, err := agentClient.ECMove(moveResp.Directory, moveResp.Hashes, moveResp.IDs, *moveResp.ECName, objectID, userId, moveResp.FileSizeInBytes) if err != nil { return fmt.Errorf("request to agent %d failed, err: %w", stgID, err) } diff --git a/client_command_ec.go b/client_command_ec.go index 896d4ef..57a3d6f 100644 --- a/client_command_ec.go +++ b/client_command_ec.go @@ -12,7 +12,7 @@ import ( "gitlink.org.cn/cloudream/utils" ) -func EcWrite(localFilePath string, bucketName string, objectName string, ecName string) error { +func EcWrite(localFilePath string, bucketID int, objectName string, ecName string) error { panic("not implement yet!") /* fmt.Println("write " + localFilePath + " as " + bucketName + "/" + objectName) diff --git a/main.go b/main.go index 86276a9..2517203 100644 --- a/main.go +++ b/main.go @@ -21,18 +21,13 @@ func main() { args := os.Args switch args[1] { case "read": - bucketID, err := strconv.Atoi(args[3]) + objectID, err := strconv.Atoi(args[3]) if err != nil { - fmt.Printf("invalid bucket id %s, err: %s", args[3], err.Error()) - os.Exit(1) - } - objectID, err := strconv.Atoi(args[4]) - if err != nil { - fmt.Printf("invalid object id %s, err: %s", args[4], err.Error()) + fmt.Printf("invalid object id %s, err: %s", args[3], err.Error()) os.Exit(1) } - if err := Read(args[2], bucketID, objectID); err != nil { + if err := Read(args[2], objectID); err != nil { fmt.Printf("read failed, err: %s", err.Error()) os.Exit(1) } @@ -54,20 +49,29 @@ func main() { os.Exit(1) } case "ecWrite": - //TODO: 写入对象时,Coor判断对象是否已存在,如果存在,则直接返回 - if err := EcWrite(args[2], args[3], args[4], args[5]); err != nil { + bucketID, err := strconv.Atoi(args[3]) + if err != nil { + fmt.Printf("invalid bucket id %s, err: %s", args[3], err.Error()) + os.Exit(1) + } + if err := EcWrite(args[2], bucketID, args[4], args[5]); err != nil { fmt.Printf("ec write failed, err: %s", err.Error()) os.Exit(1) } case "move": - stgID, err := strconv.Atoi(args[4]) + objectID, err := strconv.Atoi(args[2]) + if err != nil { + fmt.Printf("invalid object id %s, err: %s", args[2], err.Error()) + os.Exit(1) + } + stgID, err := strconv.Atoi(args[3]) if err != nil { - fmt.Printf("invalid storage id %s, err: %s", args[4], err.Error()) + fmt.Printf("invalid storage id %s, err: %s", args[3], err.Error()) os.Exit(1) } - if err := Move(args[2], args[3], stgID); err != nil { + if err := Move(objectID, stgID); err != nil { fmt.Printf("move failed, err: %s", err.Error()) os.Exit(1) }