本文整理汇总了Golang中github.com/jmhodges/levigo.DB类的典型用法代码示例。如果您正苦于以下问题:Golang DB类的具体用法?Golang DB怎么用?Golang DB使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DB类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: getPlaylistFromDB
func getPlaylistFromDB(db *levigo.DB) []playListItem {
log.Println("Loading Playlist from file...")
ro := levigo.NewReadOptions()
data, err := db.Get(ro, []byte("playlist"))
if err != nil {
log.Fatal(err)
}
p := bytes.NewBuffer(data)
dec := gob.NewDecoder(p)
var playlist []playListItem
//we must decode into a pointer, so we'll take the address of e
err = dec.Decode(&playlist)
if err != nil {
log.Print(err)
playlist = []playListItem{}
}
log.Println("Loaded ", len(playlist), " items into playlist")
log.Println(playlist)
return playlist
}
示例2: AddProc
func AddProc(procID int, db *levigo.DB) error {
ro := levigo.NewReadOptions()
wo := levigo.NewWriteOptions()
data, err := db.Get(ro, []byte("procs"))
spdata := bytes.Split(data, []byte(":"))
for i, e := range spdata {
if string(e) != "" {
fmt.Println("ProcID: #", i, string(e))
pid, err := strconv.Atoi(string(e))
if err != nil {
return err
}
if pid == procID {
return errors.New("Process already exists")
}
if isProcAlive(pid) == false {
removeProc(pid, db)
}
}
if err != nil {
return err
}
}
strdata := string(data)
strdata = strdata + ":" + strconv.Itoa(procID)
err = db.Put(wo, []byte("procs"), []byte(strdata))
return err
}
示例3: loadUsers
func loadUsers(db *levigo.DB) map[string]User {
log.Println("Loading Users from file...")
ro := levigo.NewReadOptions()
data, err := db.Get(ro, []byte("Users"))
if err != nil {
log.Fatal(err)
}
p := bytes.NewBuffer(data)
dec := gob.NewDecoder(p)
var users map[string]User
//we must decode into a pointer, so we'll take the address of e
err = dec.Decode(&users)
if err != nil {
log.Print(err)
users = map[string]User{}
}
log.Println("Loaded ", len(users), " users")
log.Printf("%+v", users)
return users
}
示例4: Execute
func (ahr AddHashRequest) Execute(database *levigo.DB, ro *levigo.ReadOptions, wo *levigo.WriteOptions) (*kminvalues.KMinValues, error) {
if ahr.Key == "" {
return nil, NoKeySpecified
}
keyBytes := []byte(ahr.Key)
data, err := database.Get(ro, keyBytes)
if err != nil {
return nil, err
}
kmv, err := kminvalues.KMinValuesFromBytes(data)
if err != nil {
if len(data) == 0 {
kmv = kminvalues.NewKMinValues(*defaultSize)
} else {
return nil, err
}
}
kmv.AddHash(ahr.Hash)
err = database.Put(wo, keyBytes, kmv.Bytes())
return kmv, err
}
示例5: GetTx
// Fetch a Tx by hash
func GetTx(db *levigo.DB, txHash string) (tx *Tx, err error) {
ro := levigo.NewReadOptions()
defer ro.Close()
txKey, blockErr := db.Get(ro, []byte(fmt.Sprintf("tx!%s", txHash)))
if blockErr != nil {
err = errors.New("Tx not found")
return
}
txData, blockErr := db.Get(ro, txKey)
if blockErr != nil {
err = errors.New("Tx not found")
return
}
tx = new(Tx)
err = json.Unmarshal(txData, tx)
if err != nil {
return
}
for txo_index, txo := range tx.TxOuts {
txo.Spent, _ = GetTxoSpent(db, txo.Addr, tx.Hash, txo_index)
}
return
}
示例6: GetLastHeight
// Return the last height processed
func GetLastHeight(db *levigo.DB) (lastHeight uint, err error) {
ro := levigo.NewReadOptions()
defer ro.Close()
lastHeightRaw, _ := db.Get(ro, []byte("last-height"))
lastHeightInt, _ := strconv.Atoi(string(lastHeightRaw[:]))
lastHeight = uint(lastHeightInt)
return
}
示例7: removeProc
func removeProc(pid int, db *levigo.DB) error {
wo := levigo.NewWriteOptions()
err := db.Delete(wo, []byte(strconv.Itoa(pid)))
if err != nil {
return err
}
return killProc(pid)
}
示例8: writeDataStoreVersion
// Write the datastore version to a shard.
func writeDataStoreVersion(store *dataStore, ldb *levigo.DB, v uint32) error {
w := new(bytes.Buffer)
encoder := gob.NewEncoder(w)
err := encoder.Encode(&v)
if err != nil {
return err
}
return ldb.Put(store.writeOpts, []byte{VERSION_KEY}, w.Bytes())
}
示例9: Execute
func (sr SetRequest) Execute(database *levigo.DB, ro *levigo.ReadOptions, wo *levigo.WriteOptions) (*KMinValues, error) {
if sr.Key == "" {
return nil, NoKeySpecified
}
keyBytes := []byte(sr.Key)
err := database.Put(wo, keyBytes, sr.Kmv.Bytes())
return sr.Kmv, err
}
示例10: AddIndex
func AddIndex(index [2]string, key []byte, indexDb *levigo.DB, wb *levigo.WriteBatch) error {
searchKey := []byte(index[0] + "~" + index[1])
keys, err := indexDb.Get(LReadOptions, searchKey)
if err != nil {
return err
}
keys = appendDataKey(keys, key)
wb.Put(searchKey, keys)
return nil
}
示例11: DelKey
/*
DelKey deletes key from provided DB handle.
*/
func DelKey(key string, db *levigo.DB) bool {
writer := levigo.NewWriteOptions()
defer writer.Close()
err := db.Delete(writer, []byte(key))
if err != nil {
golerror.Boohoo("Key "+key+" query failed.", false)
return false
}
return true
}
示例12: GetVal
/*
GetVal gets value of Key from provided db handle.
*/
func GetVal(key string, db *levigo.DB) string {
reader := levigo.NewReadOptions()
defer reader.Close()
data, err := db.Get(reader, []byte(key))
if err != nil {
golerror.Boohoo("Key "+key+" query failed.", false)
return ""
}
return string(data)
}
示例13: writeUsersToDB
func writeUsersToDB(db *levigo.DB, users map[string]User) {
wo := levigo.NewWriteOptions()
m := new(bytes.Buffer)
enc := gob.NewEncoder(m)
enc.Encode(users)
err := db.Put(wo, []byte("Users"), m.Bytes())
if err != nil {
log.Fatal(err)
}
wo.Close()
}
示例14: writePlaylistToDB
func writePlaylistToDB(db *levigo.DB, playlist []playListItem) {
wo := levigo.NewWriteOptions()
m := new(bytes.Buffer)
enc := gob.NewEncoder(m)
enc.Encode(playlist)
err := db.Put(wo, []byte("playlist"), m.Bytes())
if err != nil {
log.Fatal(err)
}
wo.Close()
}
示例15: PushKeyVal
/*
PushKeyVal push KeyVal in provided DB handle.
*/
func PushKeyVal(key string, val string, db *levigo.DB) bool {
writer := levigo.NewWriteOptions()
defer writer.Close()
keyname := []byte(key)
value := []byte(val)
err := db.Put(writer, keyname, value)
if err != nil {
golerror.Boohoo("Key "+key+" insertion failed. It's value was "+val, false)
return false
}
return true
}