@cryptotaxi247 / kubo / commits / c40b3540c

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",