Newer
Older
package core
import "sync"
// A wrapper around sync.Map for *Job.
type JobMap struct {
wrapped sync.Map
}
func (m *JobMap) Store(key JobId, value *Job) {
m.wrapped.Store(key, value)
}
func (m *JobMap) Load(key JobId) (value *Job, ok bool) {
if value, ok := m.wrapped.Load(key); !ok {
return nil, false
} else {
return value.(*Job), true
}
}
func (m *JobMap) LoadOrStore(key JobId, value *Job) (actual *Job, loaded bool) {
if iactual, iloaded := m.wrapped.LoadOrStore(key, value); iactual != nil {
return iactual.(*Job), iloaded
} else {
return nil, iloaded
}
}
func (m *JobMap) Range(f func(key JobId, value *Job) bool) {
m.wrapped.Range(func(ikey, ivalue interface{}) bool {
return f(ikey.(JobId), ivalue.(*Job))
})
}