cmd/pubsub: fix pubsub peers format brakage
License: MIT Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
Jakub Sztandera committed
Mar 16, 2018 at 14:53 UTC
ead64854e65b3324822a9ab01b9fa43ec6710c3c
1 file changed
+28
-4
core/commands/pubsub.go
+28
-4
@@ -6,10 +6,12 @@ import (
6
"fmt"
7
"io"
8
"net/http"
9
+ "sort"
10
"sync"
11
"time"
12
13
core "github.com/ipfs/go-ipfs/core"
14
+ e "github.com/ipfs/go-ipfs/core/commands/e"
15
16
floodsub "gx/ipfs/QmSFihvoND3eDaAYRCeLgLPt62yCPgMZs1NSZmKFEtJQQw/go-libp2p-floodsub"
17
pstore "gx/ipfs/QmXauCuJzmzapetmC6W4TuDJLL1yFFrVzSHoWv8YdbmnxH/go-libp2p-peerstore"
@@ -271,6 +273,23 @@ To use, the daemon must be run with '--enable-pubsub-experiment'.
273
cmds.EmitOnce(res, stringList{n.Floodsub.GetTopics()})
274
},
275
Type: stringList{},
276
+ Encoders: cmds.EncoderMap{
277
+ cmds.Text: cmds.MakeEncoder(stringListEncoder),
278
+ },
279
+}
280
+
281
+func stringListEncoder(req *cmds.Request, w io.Writer, v interface{}) error {
282
+ list, ok := v.(*stringList)
283
+ if !ok {
284
+ return e.TypeErr(list, v)
285
+ }
286
+ for _, str := range list.Strings {
287
+ _, err := fmt.Fprintf(w, "%s\n", str)
288
+ if err != nil {
289
+ return err
290
+ }
291
+ }
292
+ return nil
293
}
294
295
var PubsubPeersCmd = &cmds.Command{
@@ -313,12 +332,17 @@ To use, the daemon must be run with '--enable-pubsub-experiment'.
332
topic = req.Arguments[0]
333
}
334
316
- for _, peer := range n.Floodsub.ListPeers(topic) {
317
- res.Emit(peer.Pretty())
335
+ peers := n.Floodsub.ListPeers(topic)
336
+ list := &stringList{make([]string, 0, len(peers))}
337
+
338
+ for _, peer := range peers {
339
+ list.Strings = append(list.Strings, peer.Pretty())
340
}
341
+ sort.Strings(list.Strings)
342
+ cmds.EmitOnce(res, list)
343
},
320
- Type: "",
344
+ Type: stringList{},
345
Encoders: cmds.EncoderMap{
322
- cmds.Text: cmds.Encoders[cmds.TextNewline],
346
+ cmds.Text: cmds.MakeEncoder(stringListEncoder),
347
},
348
}