go-dvote/main.go
main.goRaw
1package main
2
3import (
4 "fmt"
5 "time"
6 "encoding/gob"
7 "bytes"
8 "github.com/vocdoni/dvote-relay/batch"
9 "github.com/vocdoni/dvote-relay/net"
10 "github.com/vocdoni/dvote-relay/db"
11 "github.com/vocdoni/dvote-relay/data"
12)
13
14var dbPath = "~/.dvote/relay.db"
15var batchSeconds = 10 //seconds
16var batchSize = 3 //packets
17
18var err error
19var batchTimer *time.Ticker
20var batchSignal chan bool
21var signal bool
22
23
24func main() {
25
26 db, err := db.NewLevelDbStorage(dbPath, false)
27 if err != nil {
28 panic(err)
29 }
30 defer db.Close()
31
32 batch.Setup(db)
33
34 batchTimer = time.NewTicker(time.Second * time.Duration(batchSeconds))
35 batchSignal = make(chan bool)
36
37 batch.BatchSignal = batchSignal
38 batch.BatchSize = batchSize
39
40 fmt.Println("Entering main loop")
41 go net.Listen("8090")
42 for {
43 select {
44 case <- batchTimer.C:
45 fmt.Println("Timer triggered")
46// fmt.Println(batch.Create())
47 //replace with chain link
48 case signal := <-batchSignal:
49 if signal == true {
50 fmt.Println("Signal triggered")
51 ns, bs := batch.Fetch()
52 buf := &bytes.Buffer{}
53 gob.NewEncoder(buf).Encode(bs)
54 bb := buf.Bytes()
55 cid := data.Publish(bb)
56 data.Pin(cid)
57 fmt.Printf("Batch published at: %s \n", cid)
58 // add to ipfs
59 // add to chain
60 // announce to pubsub
61 //fmt.Println("Nullifiers:")
62 //fmt.Println(n)
63 //fmt.Println("Batch:")
64 //fmt.Println(b)
65 batch.Compact(ns)
66 }
67 default:
68 continue
69 }
70 }
71}