Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

40 rader
752 B

  1. package persistence
  2. import (
  3. "bytes"
  4. "encoding/gob"
  5. "log"
  6. "github.com/AFASystems/presence/internal/pkg/model"
  7. "github.com/boltdb/bolt"
  8. )
  9. func LoadState(db *bolt.DB, ctx *model.AppContext) {
  10. err := db.View(func(tx *bolt.Tx) error {
  11. bucket := tx.Bucket(model.World)
  12. if bucket == nil {
  13. return nil
  14. }
  15. decode := func(key string, dest interface{}) {
  16. val := bucket.Get([]byte(key))
  17. if val == nil {
  18. return
  19. }
  20. buf := bytes.NewBuffer(val)
  21. if err := gob.NewDecoder(buf).Decode(dest); err != nil {
  22. log.Fatal("decode error: ", err)
  23. }
  24. }
  25. decode("beaconsList", &ctx.Beacons.Beacons)
  26. decode("buttonsList", &ctx.ButtonsList)
  27. decode("settings", &ctx.Settings)
  28. return nil
  29. })
  30. if err != nil {
  31. log.Fatal(err)
  32. }
  33. }