monitor writes to db

Former-commit-id: 5aa70ad9d835c607abb1c19dc620f6c45d31a866
This commit is contained in:
bel
2019-06-22 14:40:57 -06:00
parent 5e87f1659d
commit 093d468f87
8 changed files with 58 additions and 17 deletions

View File

@@ -1,19 +1,55 @@
package monitor
import "github.com/golang-collections/go-datastructures/queue"
import (
"local/rssmon3/config"
"log"
"github.com/golang-collections/go-datastructures/queue"
)
const nsQueued = "nsQueued"
type Queue struct {
queue *queue.PriorityQueue
}
func newQueue() *Queue {
return &Queue{
queue: queue.NewPriorityQueue(1),
func newQueue() (*Queue, error) {
q := queue.NewPriorityQueue(1)
db := config.Values().DB
keys, err := db.List([]string{nsQueued})
if err != nil {
return nil, err
}
for _, key := range keys {
b, err := db.Get(key, nsQueued)
if err != nil {
return nil, err
}
i := &Item{}
if err := i.Decode(b); err != nil {
return nil, err
}
q.Put(i)
}
return &Queue{
queue: q,
}, nil
}
func (q *Queue) Push(i *Item) {
if i == nil {
return
}
q.queue.Put(i)
b, err := i.Encode()
if err != nil {
log.Println(err)
return
}
if err := config.Values().DB.Set(i.Key, b, nsQueued); err != nil {
log.Println(err)
return
}
}
func (q *Queue) Pop() *Item {