diff --git a/clientCommand.go b/clientCommand.go index 8382dc7..fcc6cd7 100644 --- a/clientCommand.go +++ b/clientCommand.go @@ -29,6 +29,7 @@ const ( packetSizeInBytes = 10 ) +//TODO xh:调整函数顺序,以及函数名大小写 func Move(bucketName string, objectName string, destination string) { //将bucketName, objectName, destination发给协调端 fmt.Println("move " + bucketName + "/" + objectName + " to " + destination) @@ -141,6 +142,7 @@ func Read(localFilePath string, bucketName string, objectName string) { UserId: userId, } c1, _ := json.Marshal(command1) + //TODO xh: 用常量定义"02"等 b1 := append([]byte("02"), c1...) fmt.Println(b1) rabbit1 := rabbitmq.NewRabbitMQSimple("coorQueue") @@ -160,6 +162,7 @@ func Read(localFilePath string, bucketName string, objectName string) { wg := sync.WaitGroup{} wg.Add(1) go func() { + //TODO xh: 增加消息队列等待超时机制(配置文件指定最长等待时间,超时报错返回) for d := range msgs { _ = json.Unmarshal(d.Body, &res1) ips = res1.Ips @@ -181,6 +184,7 @@ func Read(localFilePath string, bucketName string, objectName string) { rabbit1.Destroy() rabbit2.Destroy() switch redundancy { + //TODO xh: redundancy换为bool型,用常量EC表示ec,REP表示rep case "rep": repRead(fileSizeInBytes, ips[0], hashs[0], localFilePath) case "ec": @@ -203,6 +207,7 @@ func repRead(fileSizeInBytes int64, ip string, repHash string, localFilePath str if err != nil { panic(err) } + //TODO xh:删除assets,改为读到当前目录与localFilePath的叠加路径 fURL := filepath.Join(filepath.Dir(fDir), "assets") _, err = os.Stat(fURL) if os.IsNotExist(err) { diff --git a/main.go b/main.go index 679653e..9f13294 100644 --- a/main.go +++ b/main.go @@ -27,7 +27,7 @@ func main() { for i := 0; i < arg_num; i++ { fmt.Println(args[i]) } - //TODO: 改为交互式client,输入用户名及秘钥后进入交互界面 + switch args[1] { case "ecWrite": EcWrite(args[2], args[3], args[4], args[5]) @@ -45,11 +45,13 @@ func main() { Move(args[2], args[3], args[4]) //bucket object destination } /* - TO DO: + TO DO future: 1. ls命令,显示用户指定桶下的所有对象,及相关的元数据 2. rm命令,用户指定bucket和object名,执行删除操作 3. update命令,用户发起对象更新命令,查询元数据,判断对象的冗余方式,删除旧对象(unpin所有的副本或编码块),写入新对象 4. ipfsStat命令,查看本地有无ipfsdaemon,ipfs目录的使用率 5. ipfsFlush命令,unpin本地ipfs目录中的所有cid(block) + 6. 改为交互式client,输入用户名及秘钥后进入交互界面 + 7. 支持纯缓存类型的IPFS节点,数据一律存在后端存储服务中 */ }