1
0
Fork 0
burlesque/storage.go

49 lines
783 B
Go
Raw Normal View History

2014-07-10 12:19:39 +00:00
package main
import (
2014-07-12 10:42:26 +00:00
"strconv"
"strings"
2014-07-31 08:23:41 +00:00
"bitbucket.org/ww/cabinet"
2014-07-10 12:19:39 +00:00
)
type (
2014-07-12 10:42:26 +00:00
Message []byte
Key []byte
2014-07-10 12:19:39 +00:00
)
var (
2014-07-16 17:50:21 +00:00
storage = cabinet.New()
2014-07-10 12:19:39 +00:00
)
2014-07-12 10:42:26 +00:00
func NewKey(queue string, index uint) Key {
istr := strconv.FormatUint(uint64(index), 10)
key := strings.Join([]string{queue, istr}, "_")
return Key(key)
}
2014-07-10 12:19:39 +00:00
func SetupStorage() {
2014-07-15 19:46:22 +00:00
err := storage.Open(Config.Storage, cabinet.KCOWRITER|cabinet.KCOCREATE)
2014-07-10 12:19:39 +00:00
if err != nil {
2014-07-15 19:46:22 +00:00
Error(err, "Failed to open database '%s'", Config.Storage)
2014-07-10 12:19:39 +00:00
}
}
2014-07-16 17:50:21 +00:00
func CloseStorage() {
var err error
2014-07-10 12:19:39 +00:00
2014-07-16 17:50:21 +00:00
err = storage.Sync(true)
if err != nil {
2014-07-17 13:21:57 +00:00
Error(err, "Failed to sync storage (hard)")
2014-07-16 17:50:21 +00:00
} else {
Log("Storage synchronized")
}
2014-07-12 10:42:04 +00:00
2014-07-16 17:50:21 +00:00
err = storage.Close()
if err != nil {
Error(err, "Failed to close storage")
} else {
Log("Storage closed")
2014-07-10 12:19:39 +00:00
}
}