monitor writes to db
Former-commit-id: 5aa70ad9d835c607abb1c19dc620f6c45d31a866
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user