Dumb storage
This commit is contained in:
parent
1cce73211f
commit
707a61d134
29
storage.go
29
storage.go
@ -9,15 +9,10 @@ import (
|
|||||||
type (
|
type (
|
||||||
Message []byte
|
Message []byte
|
||||||
Key []byte
|
Key []byte
|
||||||
Payload struct {
|
|
||||||
Queue *Queue
|
|
||||||
Message Message
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
storage = cabinet.New()
|
storage = cabinet.New()
|
||||||
payloads = make(chan Payload, 1000)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewKey(queue string, index uint) Key {
|
func NewKey(queue string, index uint) Key {
|
||||||
@ -33,22 +28,20 @@ func SetupStorage() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Persist(p Payload) {
|
func CloseStorage() {
|
||||||
payloads <- p
|
var err error
|
||||||
}
|
|
||||||
|
|
||||||
func PersistMessages() {
|
err = storage.Sync(true)
|
||||||
for {
|
|
||||||
p := <-payloads
|
|
||||||
|
|
||||||
p.Queue.Counter.Write(func(i uint) bool {
|
|
||||||
key := NewKey(p.Queue.Name, i)
|
|
||||||
err := storage.Set(key, p.Message)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Error(err, "Failed to write %d bytes to record '%s'", len(p.Message), key)
|
Error(err, "Failed to sync storage")
|
||||||
|
} else {
|
||||||
|
Log("Storage synchronized")
|
||||||
}
|
}
|
||||||
|
|
||||||
return (err == nil)
|
err = storage.Close()
|
||||||
})
|
if err != nil {
|
||||||
|
Error(err, "Failed to close storage")
|
||||||
|
} else {
|
||||||
|
Log("Storage closed")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user