Add support for database subscription to layered profile provider

This commit is contained in:
Patrick Pacher 2020-10-30 17:01:36 +01:00
parent 079128f9de
commit 607d77a607
No known key found for this signature in database
GPG key ID: E8CD2DA160925A6D
2 changed files with 20 additions and 4 deletions

View file

@ -14,16 +14,24 @@ const (
)
var (
errProfileNotActive = errors.New("profile not active")
errNoLayeredProfile = errors.New("profile has no layered profile")
errProfileNotActive = errors.New("profile not active")
errNoLayeredProfile = errors.New("profile has no layered profile")
pushLayeredProfile runtime.PushFunc = func(...record.Record) {}
)
func registerRevisionProvider() error {
_, err := runtime.Register(
push, err := runtime.Register(
revisionProviderPrefix,
runtime.SimpleValueGetterFunc(getRevisions),
)
return err
if err != nil {
return err
}
pushLayeredProfile = push
return nil
}
func getRevisions(key string) ([]record.Record, error) {

View file

@ -127,6 +127,12 @@ func NewLayeredProfile(localProfile *Profile) *LayeredProfile {
new.CreateMeta()
new.SetKey(runtime.DefaultRegistry.DatabaseName() + ":" + revisionProviderPrefix + localProfile.ID)
// Inform database subscribers about the new layered profile.
new.Lock()
defer new.Unlock()
pushLayeredProfile(new)
return new
}
@ -231,6 +237,8 @@ func (lp *LayeredProfile) Update() (revisionCounter uint64) {
// bump revision counter
lp.RevisionCounter++
pushLayeredProfile(lp)
}
return lp.RevisionCounter