2018-02-01 14:13:24 +01:00
|
|
|
package accounting
|
|
|
|
|
|
|
|
import (
|
2020-11-05 17:59:59 +01:00
|
|
|
"context"
|
build: modernize Go usage
This commit modernizes Go usage. This was done with:
go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./...
Then files needed to be `go fmt`ed and a few comments needed to be
restored.
The modernizations include replacing
- if/else conditional assignment by a call to the built-in min or max functions added in go1.21
- sort.Slice(x, func(i, j int) bool) { return s[i] < s[j] } by a call to slices.Sort(s), added in go1.21
- interface{} by the 'any' type added in go1.18
- append([]T(nil), s...) by slices.Clone(s) or slices.Concat(s), added in go1.21
- loop around an m[k]=v map update by a call to one of the Collect, Copy, Clone, or Insert functions from the maps package, added in go1.21
- []byte(fmt.Sprintf...) by fmt.Appendf(nil, ...), added in go1.19
- append(s[:i], s[i+1]...) by slices.Delete(s, i, i+1), added in go1.21
- a 3-clause for i := 0; i < n; i++ {} loop by for i := range n {}, added in go1.22
2025-02-26 22:08:12 +01:00
|
|
|
"maps"
|
2018-02-01 14:13:24 +01:00
|
|
|
"sync"
|
|
|
|
|
2019-07-28 19:47:38 +02:00
|
|
|
"github.com/rclone/rclone/fs"
|
2018-02-01 14:13:24 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
// 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
|
2020-11-05 17:59:59 +01:00
|
|
|
func newInProgress(ctx context.Context) *inProgress {
|
2020-11-05 12:33:32 +01:00
|
|
|
ci := fs.GetConfig(ctx)
|
2018-02-01 14:13:24 +01:00
|
|
|
return &inProgress{
|
2020-11-05 12:33:32 +01:00
|
|
|
m: make(map[string]*Account, ci.Transfers),
|
2018-02-01 14:13:24 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 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]
|
|
|
|
}
|
2019-07-18 12:13:54 +02:00
|
|
|
|
|
|
|
// 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()
|
build: modernize Go usage
This commit modernizes Go usage. This was done with:
go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./...
Then files needed to be `go fmt`ed and a few comments needed to be
restored.
The modernizations include replacing
- if/else conditional assignment by a call to the built-in min or max functions added in go1.21
- sort.Slice(x, func(i, j int) bool) { return s[i] < s[j] } by a call to slices.Sort(s), added in go1.21
- interface{} by the 'any' type added in go1.18
- append([]T(nil), s...) by slices.Clone(s) or slices.Concat(s), added in go1.21
- loop around an m[k]=v map update by a call to one of the Collect, Copy, Clone, or Insert functions from the maps package, added in go1.21
- []byte(fmt.Sprintf...) by fmt.Appendf(nil, ...), added in go1.19
- append(s[:i], s[i+1]...) by slices.Delete(s, i, i+1), added in go1.21
- a 3-clause for i := 0; i < n; i++ {} loop by for i := range n {}, added in go1.22
2025-02-26 22:08:12 +01:00
|
|
|
maps.Copy(ip.m, m.m)
|
2019-07-18 12:13:54 +02:00
|
|
|
}
|