lib/model, lib/protocol: Implement temporary indexes (fixes #950)
GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/2252
This commit is contained in:
committed by
Jakob Borg
parent
a4cd4cc253
commit
1a5f524ae4
@@ -26,28 +26,30 @@ func newDeviceActivity() *deviceActivity {
|
||||
}
|
||||
}
|
||||
|
||||
func (m *deviceActivity) leastBusy(availability []protocol.DeviceID) protocol.DeviceID {
|
||||
func (m *deviceActivity) leastBusy(availability []Availability) (Availability, bool) {
|
||||
m.mut.Lock()
|
||||
low := 2<<30 - 1
|
||||
var selected protocol.DeviceID
|
||||
for _, device := range availability {
|
||||
if usage := m.act[device]; usage < low {
|
||||
found := false
|
||||
var selected Availability
|
||||
for _, info := range availability {
|
||||
if usage := m.act[info.ID]; usage < low {
|
||||
low = usage
|
||||
selected = device
|
||||
selected = info
|
||||
found = true
|
||||
}
|
||||
}
|
||||
m.mut.Unlock()
|
||||
return selected
|
||||
return selected, found
|
||||
}
|
||||
|
||||
func (m *deviceActivity) using(device protocol.DeviceID) {
|
||||
func (m *deviceActivity) using(availability Availability) {
|
||||
m.mut.Lock()
|
||||
m.act[device]++
|
||||
m.act[availability.ID]++
|
||||
m.mut.Unlock()
|
||||
}
|
||||
|
||||
func (m *deviceActivity) done(device protocol.DeviceID) {
|
||||
func (m *deviceActivity) done(availability Availability) {
|
||||
m.mut.Lock()
|
||||
m.act[device]--
|
||||
m.act[availability.ID]--
|
||||
m.mut.Unlock()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user