arnaucube
arnaucube/go-dvotePublic Self-hosted repository
go-dvote/cmd/pssTest/psstest.go
cmd/pssTest/psstest.goRaw
 1package main
 2
 3import (
 4	"fmt"
 5	"os"
 6	"time"
 7
 8	"github.com/ethereum/go-ethereum/log"
 9	swarm "github.com/vocdoni/go-dvote/net/swarm"
10)
11
12func main() {
13	if len(os.Args) < 2 {
14		fmt.Println("Use <sym|asym> <key>")
15		return
16	}
17
18	sn := new(swarm.SwarmNet)
19	err := sn.Init()
20	if err != nil {
21		fmt.Printf("%v\n", err)
22		return
23	}
24	err = sn.SetLog("crit")
25	if err != nil {
26		fmt.Printf("Cannot set loglevel %v\n", err)
27	}
28
29	kind := os.Args[1]
30	topic := "vocdoni_test"
31	key := ""
32
33	if kind == "sym" || kind == "asym" || kind == "raw" {
34		if kind != "raw" {
35			key = os.Args[2]
36		}
37		sn.PssSub(kind, key, topic, "")
38		defer sn.PssTopics[topic].Unregister()
39	} else {
40		fmt.Println("First parameter must be sym or asym")
41		return
42	}
43
44	go func() {
45		for {
46			msg := <-sn.PssTopics[topic].Delivery
47			fmt.Printf("<- Pss received: %s\n", msg)
48		}
49	}()
50
51	hostname, _ := os.Hostname()
52
53	for {
54		fmt.Printf("-> Sending %s pss to [%s]\n", kind, key)
55		currentTime := int64(time.Now().Unix())
56		err := sn.PssPub(kind, key, topic, fmt.Sprintf("Hello world from %s at %d", hostname, currentTime), "")
57		log.Info("pss sent", "err", err)
58		time.Sleep(10 * time.Second)
59	}
60}