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)) }) }