arnaucube
arnaucube/go-dvotePublic Self-hosted repository
swarm: fixes and improvements

- fix delivery channel
- add raw methods
- unity PssSend* functions

Signed-off-by: p4u <p4u@dabax.net>
p4u p4u@dabax.net
Fri, 22 Feb 2019 20:26:58 +0100
commit

6005cde258bdea363b30d96d731f2be933a371a7

parent

51478b4e306e73441efaa3d79455d03cc86c270b

1 files changed, 16 insertions(+), 14 deletions(-)

jump to
M net/swarm/swarm.go → net/swarm/swarm.go

@@ -264,9 +264,10 @@ }

sn.PssTopics[topic] = new(pssSub) sn.PssTopics[topic].Address = address + sn.PssTopics[topic].Delivery = make(chan []byte) var pssHandler pss.HandlerFunc = func(msg []byte, peer *p2p.Peer, asym bool, keyid string) error { - log.Info("pss received", "msg", fmt.Sprintf("%s", msg), "keyid", fmt.Sprintf("%s", keyid)) + //log.Info("pss received", "msg", fmt.Sprintf("%s", msg), "keyid", fmt.Sprintf("%s", keyid)) sn.PssTopics[topic].Delivery <- msg return nil }

@@ -277,13 +278,20 @@ log.Info(fmt.Sprintf("Subscribed to topic %s", pssTopic.String()))

return nil } -func (sn *SwarmNet) PssSendSym(symkey, topic, msg, address string) error { - symKeyId, err := sn.Pss.SetSymmetricKey(strSymKey(symkey), strTopic(topic), - strAddress(address), false) - if err != nil { - return err +func (sn *SwarmNet) PssSend(subType, key, topic, msg, address string) error { + var err error + dstAddr := strAddress(address) + dstTopic := strTopic(topic) + if subType == "sym" { + symKeyId, err := sn.Pss.SetSymmetricKey(strSymKey(key), dstTopic, dstAddr, false) + if err != nil { + return err + } + err = sn.Pss.SendSym(symKeyId, strTopic(topic), hexutil.Bytes(msg)) } - err = sn.Pss.SendSym(symKeyId, strTopic(topic), hexutil.Bytes(msg)) + if subType == "raw" { + err = sn.Pss.SendRaw(hexutil.Bytes(dstAddr), dstTopic, hexutil.Bytes(msg)) + } return err }

@@ -299,13 +307,7 @@ }()

hostname, _ := os.Hostname() for { - err := sn.PssSendSym("vocdoni", "vocdoni_test", fmt.Sprintf("Hello world from %s", hostname), "") - //err = sn.Pss.SendSym(symKeyId, topic, hexutil.Bytes(fmt.Sprintf("Hello world from %s", hostname))) - /* err = pssCli.SendRaw(emptyAddress, topic, []byte("Hello world!")) - if err != nil { - log.Warn("pss cannot send raw", "err", err) - } - */ + err := sn.PssSend("sym", "vocdoni", "vocdoni_test", fmt.Sprintf("Hello world from %s", hostname), "") log.Info("pss sent", "err", err) time.Sleep(10 * time.Second) }