mirror of
https://github.com/rclone/rclone.git
synced 2024-11-23 01:51:52 +08:00
57d5de6fba
git grep -l github.com/ncw/rclone | xargs -d'\n' perl -i~ -lpe 's|github.com/ncw/rclone|github.com/rclone/rclone|g' goimports -w `find . -name \*.go`
53 lines
1.0 KiB
Go
53 lines
1.0 KiB
Go
package accounting
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/rclone/rclone/fs"
|
|
)
|
|
|
|
// inProgress holds a synchronized map of in progress transfers
|
|
type inProgress struct {
|
|
mu sync.Mutex
|
|
m map[string]*Account
|
|
}
|
|
|
|
// newInProgress makes a new inProgress object
|
|
func newInProgress() *inProgress {
|
|
return &inProgress{
|
|
m: make(map[string]*Account, fs.Config.Transfers),
|
|
}
|
|
}
|
|
|
|
// set marks the name as in progress
|
|
func (ip *inProgress) set(name string, acc *Account) {
|
|
ip.mu.Lock()
|
|
defer ip.mu.Unlock()
|
|
ip.m[name] = acc
|
|
}
|
|
|
|
// clear marks the name as no longer in progress
|
|
func (ip *inProgress) clear(name string) {
|
|
ip.mu.Lock()
|
|
defer ip.mu.Unlock()
|
|
delete(ip.m, name)
|
|
}
|
|
|
|
// get gets the account for name, of nil if not found
|
|
func (ip *inProgress) get(name string) *Account {
|
|
ip.mu.Lock()
|
|
defer ip.mu.Unlock()
|
|
return ip.m[name]
|
|
}
|
|
|
|
// merge adds items from another inProgress
|
|
func (ip *inProgress) merge(m *inProgress) {
|
|
ip.mu.Lock()
|
|
defer ip.mu.Unlock()
|
|
m.mu.Lock()
|
|
defer m.mu.Unlock()
|
|
for key, val := range m.m {
|
|
ip.m[key] = val
|
|
}
|
|
}
|