本文整理汇总了Golang中github.com/syndtr/goleveldb/leveldb.DB.Close方法的典型用法代码示例。如果您正苦于以下问题:Golang DB.Close方法的具体用法?Golang DB.Close怎么用?Golang DB.Close使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/syndtr/goleveldb/leveldb.DB
的用法示例。
在下文中一共展示了DB.Close方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: fSaveTerm
func (rn *RaftNode) fSaveTerm(i int) {
var currentTermDB *leveldb.DB
var err error
currentTermDB, err = leveldb.OpenFile(PATH+"/currentTerm", nil)
for err != nil {
currentTermDB, err = leveldb.OpenFile(PATH+"/currentTerm", nil)
}
// fmt.Println("sad", currentTermDB, reflect.TypeOf(currentTermDB), err, reflect.TypeOf(err))
defer currentTermDB.Close()
currentTermDB.Put([]byte(strconv.Itoa(rn.sm.ServerID)), []byte(strconv.Itoa(i)), nil)
}
示例2: fSaveVotedFor
func (rn *RaftNode) fSaveVotedFor(i int) {
var votedForDB *leveldb.DB
var err error
votedForDB, err = leveldb.OpenFile(PATH+"/currentTerm", nil)
for err != nil {
votedForDB, err = leveldb.OpenFile(PATH+"/currentTerm", nil)
}
defer votedForDB.Close()
votedForDB.Put([]byte(strconv.Itoa(rn.sm.ServerID)), []byte(strconv.Itoa(i)), nil)
}
示例3: main
func main() {
rootCmd := &cobra.Command{
Short: "leveldb-tools",
}
var db *leveldb.DB
openDB := func(cmd *cobra.Command, args []string) {
if len(args) != 1 {
rootCmd.Usage()
os.Exit(1)
}
var err error
opts := &opt.Options{ErrorIfMissing: cmd.Use == "dump", Strict: opt.StrictAll}
if db, err = leveldb.OpenFile(args[0], opts); err != nil {
log.Fatal(err)
}
}
dumpCmd := &cobra.Command{
Use: "dump",
Short: "dump database",
Run: func(cmd *cobra.Command, args []string) {
defer db.Close()
defer os.Stdout.Close()
w := bufio.NewWriter(os.Stdout)
defer w.Flush()
iter := db.NewIterator(nil, &opt.ReadOptions{Strict: opt.StrictAll, DontFillCache: true})
defer iter.Release()
sep := sep[:]
for iter.Next() {
k, v := iter.Key(), iter.Value()
w.WriteString(fmt.Sprintf("+%d,%d:", len(k), len(v)))
w.Write(k)
w.Write(sep)
w.Write(v)
if err := w.WriteByte('\n'); err != nil {
log.Fatal(err)
}
}
if err := iter.Error(); err != nil {
log.Fatal(err)
}
},
PersistentPreRun: openDB,
}
rootCmd.AddCommand(dumpCmd)
loadCmd := &cobra.Command{
Use: "load",
Short: "load database",
Run: func(cmd *cobra.Command, args []string) {
defer func() {
if err := db.Close(); err != nil {
log.Fatal(err)
}
}()
r := bufio.NewReader(os.Stdin)
var lk, lv int
var k, v []byte
sepLen := len(sep)
sep := sep[:]
for {
if _, err := fmt.Fscanf(r, "+%d,%d:", &lk, &lv); err != nil {
if err == io.EOF || err == io.ErrUnexpectedEOF {
break
}
log.Fatal(err)
}
if cap(k) < lk {
k = make([]byte, lk*2)
}
if cap(v) < lv+sepLen+1 {
v = make([]byte, lv*2+2)
}
n, err := io.ReadFull(r, k[:lk])
if err != nil {
log.Fatal(err)
}
k = k[:n]
if n, err = io.ReadFull(r, v[:lv+sepLen+1]); err != nil {
log.Fatal(err)
}
if !bytes.Equal(sep, v[:sepLen]) {
log.Fatal("awaited %q, got %q", sep, v)
}
v = v[:n]
if v[n-1] != '\n' {
log.Fatal("should end with EOL, got %q", v)
}
v = v[2 : n-1]
if err := db.Put(k, v, nil); err != nil {
log.Fatal(err)
}
}
},
PersistentPreRun: openDB,
}
rootCmd.AddCommand(loadCmd)
rootCmd.Execute()
}