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	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}