From 8fb48433300c8c85d06226f8fc3b0095aff4b213 Mon Sep 17 00:00:00 2001 From: littlefish12345 <18819303050@163.com> Date: Mon, 6 Dec 2021 23:34:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=80=9A=E8=BF=87socket?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E6=97=B6=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=A3=80=E6=9F=A5node=E6=98=AF=E5=90=A6=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E7=9A=84=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- file-system-upload.go | 24 ++++++++++++++++-------- file-system.go | 26 ++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/file-system-upload.go b/file-system-upload.go index 844d092..9d207b1 100644 --- a/file-system-upload.go +++ b/file-system-upload.go @@ -358,24 +358,32 @@ func UploadProcessSocketThread(conn *net.Conn, fileLength int64, blockCount *int var imageHash string stop := false errTimes := 0 - var buffer []byte blockCountLock.Lock() nowBlock := *blockCount *blockCount = *blockCount + 1 + var recvSize int64 = 0 if (nowBlock+1)*singleImageMaxSize > int64(fileLength) { if nowBlock*singleImageMaxSize > int64(fileLength) { break } - buffer = make([]byte, fileLength-nowBlock*singleImageMaxSize) + recvSize = fileLength - nowBlock*singleImageMaxSize } else { - buffer = make([]byte, singleImageMaxSize) + recvSize = singleImageMaxSize } + buffer := make([]byte, recvSize) - _, err = (*conn).Read(buffer) - if err != nil && err != io.EOF { - runtime.GC() - threadsWaitGroup.Done() - panic(err) + var totalBytes int64 = 0 + for { + num, err := (*conn).Read(buffer[totalBytes:recvSize]) + if err != nil && err != io.EOF { + runtime.GC() + threadsWaitGroup.Done() + panic(err) + } + totalBytes = totalBytes + int64(num) + if totalBytes == recvSize { + break + } } blockCountLock.Unlock() diff --git a/file-system.go b/file-system.go index 2288bf9..e226cd8 100644 --- a/file-system.go +++ b/file-system.go @@ -85,6 +85,32 @@ func GetTempPath(path string) ([][]string, error) { //获取内部path列表 return tempPath, nil } +func DoesNodeExist(path string) (bool, string, error) { //查看节点是否存在 path:要查询的路径 返回值:是否存在, node类型 + if rootNodeHash == "" { + return false, "", NotSetARootNodeYet() + } + if path == "/" { + return true, "0", nil + } + + nodeRWLock.Lock() + tempPath, err := GetTempPath(GetPathFolder(path)) + if err != nil { + nodeRWLock.Unlock() + return false, "", err + } + nodeData, err := DecodeNode(tempPath[len(tempPath)-1][1], true) + nodeRWLock.Unlock() + if err != nil { + return false, "", err + } + + if fileData, ok := nodeData[GetPathFileName(path)]; ok { + return true, fileData[0], nil + } + return false, "", nil +} + func ListFile(path string) ([][]string, error) { //获取当前文件夹下所有东西(ls) path:要获取的路径 返回值:[[文件名,node类型], ...] if rootNodeHash == "" { return nil, NotSetARootNodeYet()