add 'pubsub ls' to list topics
License: MIT Signed-off-by: Jeromy <why@ipfs.io>
Jeromy committed
Sep 14, 2016 at 15:44 UTC
c40b3540c43f03b084bc6824f11a532541b7f7cf
3 files changed
+44
-6
core/commands/pubsub.go
+41
-3
@@ -13,7 +13,7 @@ import (
13
cmds "github.com/ipfs/go-ipfs/commands"
14
core "github.com/ipfs/go-ipfs/core"
15
16
- floodsub "gx/ipfs/QmQtsU1T46uxjFMd5r5PfyaY1HdV5jcxZbvvHbAVRL52hc/floodsub"
16
+ floodsub "gx/ipfs/QmXzEtq2W7rGCF9RYXL79zQvLsKZxAmT9QFtEC5FYfQYc5/floodsub"
17
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
18
key "gx/ipfs/Qmce4Y4zg3sYr7xKM5UueS67vhNni6EeWgCRnb7MbLJMew/go-key"
19
pstore "gx/ipfs/QmdMfSLMDBDYhtc4oF3NYGCZr5dy4wQb6Ji26N4D4mdxa2/go-libp2p-peerstore"
@@ -36,6 +36,7 @@ To use, the daemon must be run with '--enable-pubsub-experiment'.
36
Subcommands: map[string]*cmds.Command{
37
"pub": PubsubPubCmd,
38
"sub": PubsubSubCmd,
39
+ "ls": PubsubLsCmd,
40
},
41
}
42
@@ -76,7 +77,7 @@ To use, the daemon must be run with '--enable-pubsub-experiment'.
77
}
78
79
topic := req.Arguments()[0]
79
- msgs, err := n.Floodsub.Subscribe(topic)
80
+ msgs, err := n.Floodsub.Subscribe(req.Context(), topic)
81
if err != nil {
82
res.SetError(err, cmds.ErrNormal)
83
return
@@ -194,7 +195,6 @@ To use, the daemon must be run with '--enable-pubsub-experiment'.
195
cmds.StringArg("topic", true, false, "Topic to publish to."),
196
cmds.StringArg("data", true, true, "Payload of message to publish.").EnableStdin(),
197
},
197
- Options: []cmds.Option{},
198
Run: func(req cmds.Request, res cmds.Response) {
199
n, err := req.InvocContext().GetNode()
200
if err != nil {
@@ -223,3 +223,41 @@ To use, the daemon must be run with '--enable-pubsub-experiment'.
223
}
224
},
225
}
226
+
227
+var PubsubLsCmd = &cmds.Command{
228
+ Helptext: cmds.HelpText{
229
+ Tagline: "List subscribed topics by name.",
230
+ ShortDescription: `
231
+ipfs pubsub ls lists out the names of topics you are currently subscribed to.
232
+
233
+This is an experimental feature. It is not intended in its current state
234
+to be used in a production environment.
235
+
236
+To use, the daemon must be run with '--enable-pubsub-experiment'.
237
+`,
238
+ },
239
+ Run: func(req cmds.Request, res cmds.Response) {
240
+ n, err := req.InvocContext().GetNode()
241
+ if err != nil {
242
+ res.SetError(err, cmds.ErrNormal)
243
+ return
244
+ }
245
+
246
+ // Must be online!
247
+ if !n.OnlineMode() {
248
+ res.SetError(errNotOnline, cmds.ErrClient)
249
+ return
250
+ }
251
+
252
+ if n.Floodsub == nil {
253
+ res.SetError(fmt.Errorf("experimental pubsub feature not enabled. Run daemon with --enable-pubsub-experiment to use."), cmds.ErrNormal)
254
+ return
255
+ }
256
+
257
+ res.SetOutput(&stringList{n.Floodsub.GetTopics()})
258
+ },
259
+ Type: stringList{},
260
+ Marshalers: cmds.MarshalerMap{
261
+ cmds.Text: stringListMarshaler,
262
+ },
263
+}
core/core.go
+1
-1
@@ -17,13 +17,13 @@ import (
17
"time"
18
19
diag "github.com/ipfs/go-ipfs/diagnostics"
20
- floodsub "gx/ipfs/QmQtsU1T46uxjFMd5r5PfyaY1HdV5jcxZbvvHbAVRL52hc/floodsub"
20
goprocess "gx/ipfs/QmSF8fPo3jgVBAy8fpdjjYqgG87dkJgUprRBHRd2tmfgpP/goprocess"
21
mamask "gx/ipfs/QmSMZwvs3n4GBikZ7hKzT17c3bk65FmyZo2JqtJ16swqCv/multiaddr-filter"
22
logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
23
b58 "gx/ipfs/QmT8rehPR3F6bmwL6zjUN8XpiDBFFpMP2myPdC6ApsWfJf/go-base58"
24
ic "gx/ipfs/QmVoi5es8D5fNHZDqoW6DgDAEPEV5hQp8GBz161vZXiwpQ/go-libp2p-crypto"
25
peer "gx/ipfs/QmWXjJo15p4pzT7cayEwZi2sWgJqLnGDof6ZGMh9xBgU1p/go-libp2p-peer"
26
+ floodsub "gx/ipfs/QmXzEtq2W7rGCF9RYXL79zQvLsKZxAmT9QFtEC5FYfQYc5/floodsub"
27
pstore "gx/ipfs/QmYkwVGkwoPbMVQEbf6LonZg4SsCxGP3H7PBEtdNCNRyxD/go-libp2p-peerstore"
28
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
29
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
package.json
+2
-2
@@ -266,9 +266,9 @@
266
},
267
{
268
"author": "whyrusleeping",
269
- "hash": "QmQtsU1T46uxjFMd5r5PfyaY1HdV5jcxZbvvHbAVRL52hc",
269
+ "hash": "QmXzEtq2W7rGCF9RYXL79zQvLsKZxAmT9QFtEC5FYfQYc5",
270
"name": "floodsub",
271
- "version": "0.4.2"
271
+ "version": "0.5.0"
272
}
273
],
274
"gxVersion": "0.4.0",