package batch import ( "github.com/syndtr/goleveldb/leveldb" // "encoding/json" "fmt" "github.com/vocdoni/dvote-relay/types" ) var DBPath string var BDBPath string var DB *leveldb.DB var BDB *leveldb.DB var BatchSignal chan bool var BatchSize int var currentBatchSize int var err error func Setup() { DB, err = leveldb.OpenFile(DBPath, nil) if err != nil { panic(err) } defer DB.Close() BDB, err = leveldb.OpenFile(BDBPath, nil) if err != nil { panic(err) } defer BDB.Close() fmt.Println(BDB) } //add (queue for counting) func Add(p types.Packet) error { BDB, err = leveldb.OpenFile(BDBPath, nil) if err != nil { panic(err) } defer BDB.Close() err := BDB.Put([]byte(fmt.Sprintf("%v", p.Nullifier)),[]byte(fmt.Sprintf("%v", p)), nil) if err != nil { return err } currentBatchSize++ fmt.Println(currentBatchSize) if currentBatchSize >= BatchSize { fmt.Println("sending ready") BatchSignal <- true fmt.Println("sent ready") } fmt.Println("returning") return nil } //create (return batch) func Create() []byte { fmt.Println("Creating batch") DB, err = leveldb.OpenFile(DBPath, nil) if err != nil { panic(err) } defer DB.Close() var b []byte iter := BDB.NewIterator(nil, nil) for iter.Next() { err := iter.Error() if err != nil { panic(err) } //put p in batch //db.Put(iter.Key(), iter.Val(), nil) //bdb.Delete(iter.Key(), nil) } iter.Release() return b }