go-dvote/cmd/relay/relay.go
cmd/relay/relay.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 topic := "vocdoni_pubsub_testing"
41
42 fmt.Println("Entering main loop")
43 go net.Sub(topic)
44 for {
45 select {
46 case <- batchTimer.C:
47 fmt.Println("Timer triggered")
48// fmt.Println(batch.Create())
49 //replace with chain link
50 case signal := <-batchSignal:
51 if signal == true {
52 fmt.Println("Signal triggered")
53 ns, bs := batch.Fetch()
54 buf := &bytes.Buffer{}
55 gob.NewEncoder(buf).Encode(bs)
56 bb := buf.Bytes()
57 cid := data.Publish(bb)
58 data.Pin(cid)
59 fmt.Printf("Batch published at: %s \n", cid)
60 // add to chain
61 // announce to pubsub
62 //fmt.Println("Nullifiers:")
63 //fmt.Println(n)
64 //fmt.Println("Batch:")
65 //fmt.Println(b)
66 batch.Compact(ns)
67 }
68 default:
69 continue
70 }
71 }
72}