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  }