github.com/0chain/gosdk@v1.17.11/wasmsdk/chunked_upload_progress_storer.go (about) 1 //go:build js && wasm 2 // +build js,wasm 3 4 package main 5 6 import ( 7 "sync" 8 9 "github.com/0chain/gosdk/zboxcore/sdk" 10 "github.com/0chain/gosdk/zboxcore/zboxutil" 11 ) 12 13 // chunkedUploadProgressStorer load and save upload progress 14 type chunkedUploadProgressStorer struct { 15 list map[string]*sdk.UploadProgress 16 lock sync.Mutex 17 } 18 19 // Load load upload progress by id 20 func (mem *chunkedUploadProgressStorer) Load(id string) *sdk.UploadProgress { 21 mem.lock.Lock() 22 defer mem.lock.Unlock() 23 if mem.list == nil { 24 mem.list = make(map[string]*sdk.UploadProgress) 25 return nil 26 } 27 up, ok := mem.list[id] 28 29 if ok { 30 return up 31 } 32 33 return nil 34 } 35 36 // Save save upload progress 37 func (mem *chunkedUploadProgressStorer) Save(up sdk.UploadProgress) { 38 mem.lock.Lock() 39 defer mem.lock.Unlock() 40 if mem.list == nil { 41 mem.list = make(map[string]*sdk.UploadProgress) 42 } 43 mem.list[up.ID] = &up 44 } 45 46 //nolint:golint,unused 47 func (mem *chunkedUploadProgressStorer) Update(id string, chunkIndex int, _ zboxutil.Uint128) { 48 mem.lock.Lock() 49 defer mem.lock.Unlock() 50 if mem.list == nil { 51 return 52 } 53 up, ok := mem.list[id] 54 if ok { 55 up.ChunkIndex = chunkIndex 56 } 57 } 58 59 // Remove remove upload progress by id 60 func (mem *chunkedUploadProgressStorer) Remove(id string) error { 61 mem.lock.Lock() 62 defer mem.lock.Unlock() 63 delete(mem.list, id) 64 return nil 65 }