arnaucube
arnaucube/go-dvotePublic Self-hosted repository
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}