go-dvote/batch/batch.go
batch/batch.goRaw
1package batch
2
3import (
4 "github.com/syndtr/goleveldb/leveldb"
5// "encoding/json"
6 "fmt"
7 "github.com/vocdoni/dvote-relay/types"
8)
9
10var DBPath string
11var BDBPath string
12var DB *leveldb.DB
13var BDB *leveldb.DB
14var BatchSignal chan bool
15var BatchSize int
16var currentBatchSize int
17var err error
18
19func Setup() {
20 DB, err = leveldb.OpenFile(DBPath, nil)
21 if err != nil {
22 panic(err)
23 }
24 defer DB.Close()
25
26 BDB, err = leveldb.OpenFile(BDBPath, nil)
27 if err != nil {
28 panic(err)
29 }
30 defer BDB.Close()
31 fmt.Println(BDB)
32}
33
34
35//add (queue for counting)
36func Add(p types.Packet) error {
37 BDB, err = leveldb.OpenFile(BDBPath, nil)
38 if err != nil {
39 panic(err)
40 }
41 defer BDB.Close()
42
43 err := BDB.Put([]byte(fmt.Sprintf("%v", p.Nullifier)),[]byte(fmt.Sprintf("%v", p)), nil)
44 if err != nil {
45 return err
46 }
47 currentBatchSize++
48 fmt.Println(currentBatchSize)
49 if currentBatchSize >= BatchSize {
50 fmt.Println("sending ready")
51 BatchSignal <- true
52 fmt.Println("sent ready")
53 }
54 fmt.Println("returning")
55 return nil
56}
57
58//create (return batch)
59func Create() []byte {
60 fmt.Println("Creating batch")
61 DB, err = leveldb.OpenFile(DBPath, nil)
62 if err != nil {
63 panic(err)
64 }
65 defer DB.Close()
66
67 var b []byte
68
69 iter := BDB.NewIterator(nil, nil)
70 for iter.Next() {
71 err := iter.Error()
72 if err != nil {
73 panic(err)
74 }
75 //put p in batch
76 //db.Put(iter.Key(), iter.Val(), nil)
77 //bdb.Delete(iter.Key(), nil)
78 }
79 iter.Release()
80 return b
81}