go-dvote/batch/batch.go
batch/batch.goRaw
1package batch
2
3import (
4 "fmt"
5 "github.com/vocdoni/dvote-relay/types"
6 "github.com/vocdoni/dvote-relay/db"
7)
8
9var rdb *db.LevelDbStorage
10var bdb *db.LevelDbStorage
11var BatchSignal chan bool
12var BatchSize int
13var currentBatchSize int
14var err error
15
16func Setup(l *db.LevelDbStorage) {
17 rdb = l.WithPrefix([]byte("relay_"))
18 bdb = l.WithPrefix([]byte("batch_"))
19}
20
21
22//add (queue for counting)
23func Add(p types.Ballot) error {
24 err := bdb.Put([]byte(fmt.Sprintf("%v", p.Nullifier)),[]byte(fmt.Sprintf("%v", p)))
25 if err != nil {
26 return err
27 }
28
29 //this actually needs to see if it was added
30 currentBatchSize++
31 fmt.Println(bdb.Info())
32 if currentBatchSize >= BatchSize {
33 BatchSignal <- true
34 }
35 return nil
36}
37
38//create (return batch)
39//k is []byte nullifier
40//v is []byte package
41func Create() []byte {
42 var b []byte
43 var i int
44 iter := bdb.Iter()
45 for iter.Next() {
46 k := iter.Key()
47 v := iter.Value()
48 err := iter.Error()
49 if err != nil {
50 panic(err)
51 }
52 fmt.Println(i)
53 fmt.Println(string(k))
54 fmt.Println(string(v))
55 i++
56 //put p in batch
57 //rdb.Put(iter.Key(), iter.Val(), nil)
58 //bdb.Delete(iter.Key(), nil)
59 }
60 iter.Release()
61 return b
62}