arnaucube
arnaucube/go-dvotePublic Self-hosted repository
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
48	currentBatchSize++
49	if currentBatchSize >= BatchSize {
50		BatchSignal <- true
51	}
52	return nil
53}
54
55//create (return batch)
56func Create() []byte {
57	DB, err = leveldb.OpenFile(DBPath, nil)
58	if err != nil {
59		panic(err)
60	}
61	defer DB.Close()
62
63	var b []byte
64
65	iter := BDB.NewIterator(nil, nil)
66	for iter.Next() {
67		err := iter.Error()
68		if err != nil {
69			panic(err)
70		}
71		//put p in batch
72		//db.Put(iter.Key(), iter.Val(), nil)
73		//bdb.Delete(iter.Key(), nil)
74	}
75	iter.Release()
76	return b
77}