go-dvote/net/net.go
net/net.goRaw
1package net
2
3import (
4 "encoding/json"
5 "fmt"
6 "github.com/vocdoni/dvote-relay/batch"
7 "github.com/vocdoni/dvote-relay/types"
8 "github.com/vocdoni/dvote-relay/data"
9 shell "github.com/ipfs/go-ipfs-api"
10)
11
12
13func Sub(topic string) error {
14 subscription := data.PsSubscribe(topic)
15 fmt.Println("Subscribed > " + topic)
16 var msg shell.PubSubRecord
17 var err error
18 for {
19 msg, err = subscription.Next()
20 if err != nil {
21 return err
22 }
23
24 payload := msg.Data()
25
26 var e types.Envelope
27 var b types.Ballot
28
29 err = json.Unmarshal(payload, &e)
30 if err != nil {
31 return err
32 }
33
34 err = json.Unmarshal(e.Ballot, &b)
35 if err != nil {
36 return err
37 }
38
39 err = batch.Add(b)
40 if err != nil {
41 return err
42 }
43
44 fmt.Println("Got > " + string(payload))
45 }
46}