arnaucube
arnaucube/go-dvotePublic Self-hosted repository
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}