@cryptotaxi247 / kubo / commits / c5b44ded4

commands/bitswap: use new cmds lib

License: MIT Signed-off-by: Overbool <overbool.xu@gmail.com>

Overbool committed Oct 27, 2018 at 12:47 UTC c5b44ded40329529397abf7bbb98eea085c0278a
1 file changed +47 -69
core/commands/bitswap.go
+47 -69
@@ -1,18 +1,15 @@
1 package commands
2
3 import (
4 - "bytes"
4 "fmt"
5 "io"
6
8 - oldcmds "github.com/ipfs/go-ipfs/commands"
9 - lgc "github.com/ipfs/go-ipfs/commands/legacy"
7 cmdenv "github.com/ipfs/go-ipfs/core/commands/cmdenv"
8 e "github.com/ipfs/go-ipfs/core/commands/e"
9 +
10 + humanize "gx/ipfs/QmPSBJL4momYnE7DcUyk2DVhD6rH488ZmHBGLbxNdhU44K/go-humanize"
11 bitswap "gx/ipfs/QmXRphxBT4BH2GqGHUSbqULm7wNsxnpA2NrbNaY3DU1Y5K/go-bitswap"
12 decision "gx/ipfs/QmXRphxBT4BH2GqGHUSbqULm7wNsxnpA2NrbNaY3DU1Y5K/go-bitswap/decision"
14 -
15 - "gx/ipfs/QmPSBJL4momYnE7DcUyk2DVhD6rH488ZmHBGLbxNdhU44K/go-humanize"
13 cmds "gx/ipfs/Qma6uuSyjkecGhMFFLfzyJDPyoDtNJSHJNweDccZhaWkgU/go-ipfs-cmds"
14 peer "gx/ipfs/QmcqU6QUDSXprb1518vYDGczrTJTyGwLG9eUa5iNX4xUtS/go-libp2p-peer"
15 cmdkit "gx/ipfs/Qmde5VP1qUkyQXKCfmEUA7bP64V2HAptbJ7phuPp7jXWwg/go-ipfs-cmdkit"
@@ -26,9 +23,9 @@ var BitswapCmd = &cmds.Command{
23
24 Subcommands: map[string]*cmds.Command{
25 "stat": bitswapStatCmd,
29 - "wantlist": lgc.NewCommand(showWantlistCmd),
30 - "ledger": lgc.NewCommand(ledgerCmd),
31 - "reprovide": lgc.NewCommand(reprovideCmd),
26 + "wantlist": showWantlistCmd,
27 + "ledger": ledgerCmd,
28 + "reprovide": reprovideCmd,
29 },
30 }
31
@@ -36,7 +33,7 @@ const (
33 peerOptionName = "peer"
34 )
35
39 -var showWantlistCmd = &oldcmds.Command{
36 +var showWantlistCmd = &cmds.Command{
37 Helptext: cmdkit.HelpText{
38 Tagline: "Show blocks currently on the wantlist.",
39 ShortDescription: `
@@ -46,47 +43,46 @@ Print out all blocks currently on the bitswap wantlist for the local peer.`,
43 cmdkit.StringOption(peerOptionName, "p", "Specify which peer to show wantlist for. Default: self."),
44 },
45 Type: KeyList{},
49 - Run: func(req oldcmds.Request, res oldcmds.Response) {
50 - nd, err := req.InvocContext().GetNode()
46 + Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
47 + nd, err := cmdenv.GetNode(env)
48 if err != nil {
52 - res.SetError(err, cmdkit.ErrNormal)
53 - return
49 + return err
50 }
51
52 if !nd.OnlineMode() {
57 - res.SetError(ErrNotOnline, cmdkit.ErrClient)
58 - return
53 + return ErrNotOnline
54 }
55
56 bs, ok := nd.Exchange.(*bitswap.Bitswap)
57 if !ok {
63 - res.SetError(e.TypeErr(bs, nd.Exchange), cmdkit.ErrNormal)
64 - return
58 + return e.TypeErr(bs, nd.Exchange)
59 }
60
67 - pstr, found, err := req.Option(peerOptionName).String()
61 + pstr, found := req.Options[peerOptionName].(string)
62 if err != nil {
69 - res.SetError(err, cmdkit.ErrNormal)
70 - return
63 + return err
64 }
65 if found {
66 pid, err := peer.IDB58Decode(pstr)
67 if err != nil {
75 - res.SetError(err, cmdkit.ErrNormal)
76 - return
68 + return err
69 }
70 if pid == nd.Identity {
79 - res.SetOutput(&KeyList{bs.GetWantlist()})
80 - return
71 + return res.Emit(&KeyList{bs.GetWantlist()})
72 }
73
83 - res.SetOutput(&KeyList{bs.WantlistForPeer(pid)})
84 - } else {
85 - res.SetOutput(&KeyList{bs.GetWantlist()})
74 + return res.Emit(&KeyList{bs.WantlistForPeer(pid)})
75 }
76 + return res.Emit(&KeyList{bs.GetWantlist()})
77 },
88 - Marshalers: oldcmds.MarshalerMap{
89 - oldcmds.Text: KeyListTextMarshaler,
78 + Encoders: cmds.EncoderMap{
79 + cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *KeyList) error {
80 + for _, key := range out.Keys {
81 + fmt.Fprintln(w, key.String())
82 + }
83 +
84 + return nil
85 + }),
86 },
87 }
88
@@ -147,7 +143,7 @@ var bitswapStatCmd = &cmds.Command{
143 },
144 }
145
150 -var ledgerCmd = &oldcmds.Command{
146 +var ledgerCmd = &cmds.Command{
147 Helptext: cmdkit.HelpText{
148 Tagline: "Show the current ledger for a peer.",
149 ShortDescription: `
@@ -160,81 +156,63 @@ prints the ledger associated with a given peer.
156 cmdkit.StringArg("peer", true, false, "The PeerID (B58) of the ledger to inspect."),
157 },
158 Type: decision.Receipt{},
163 - Run: func(req oldcmds.Request, res oldcmds.Response) {
164 - nd, err := req.InvocContext().GetNode()
159 + Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
160 + nd, err := cmdenv.GetNode(env)
161 if err != nil {
166 - res.SetError(err, cmdkit.ErrNormal)
167 - return
162 + return err
163 }
164
165 if !nd.OnlineMode() {
171 - res.SetError(ErrNotOnline, cmdkit.ErrClient)
172 - return
166 + return ErrNotOnline
167 }
168
169 bs, ok := nd.Exchange.(*bitswap.Bitswap)
170 if !ok {
177 - res.SetError(e.TypeErr(bs, nd.Exchange), cmdkit.ErrNormal)
178 - return
171 + return e.TypeErr(bs, nd.Exchange)
172 }
173
181 - partner, err := peer.IDB58Decode(req.Arguments()[0])
174 + partner, err := peer.IDB58Decode(req.Arguments[0])
175 if err != nil {
183 - res.SetError(err, cmdkit.ErrClient)
184 - return
176 + return err
177 }
186 - res.SetOutput(bs.LedgerForPeer(partner))
178 + return res.Emit(bs.LedgerForPeer(partner))
179 },
188 - Marshalers: oldcmds.MarshalerMap{
189 - oldcmds.Text: func(res oldcmds.Response) (io.Reader, error) {
190 - v, err := unwrapOutput(res.Output())
191 - if err != nil {
192 - return nil, err
193 - }
194 -
195 - out, ok := v.(*decision.Receipt)
196 - if !ok {
197 - return nil, e.TypeErr(out, v)
198 - }
199 -
200 - buf := new(bytes.Buffer)
201 - fmt.Fprintf(buf, "Ledger for %s\n"+
180 + Encoders: cmds.EncoderMap{
181 + cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *decision.Receipt) error {
182 + fmt.Fprintf(w, "Ledger for %s\n"+
183 "Debt ratio:\t%f\n"+
184 "Exchanges:\t%d\n"+
185 "Bytes sent:\t%d\n"+
186 "Bytes received:\t%d\n\n",
187 out.Peer, out.Value, out.Exchanged,
188 out.Sent, out.Recv)
208 - return buf, nil
209 - },
189 + return nil
190 + }),
191 },
192 }
193
213 -var reprovideCmd = &oldcmds.Command{
194 +var reprovideCmd = &cmds.Command{
195 Helptext: cmdkit.HelpText{
196 Tagline: "Trigger reprovider.",
197 ShortDescription: `
198 Trigger reprovider to announce our data to network.
199 `,
200 },
220 - Run: func(req oldcmds.Request, res oldcmds.Response) {
221 - nd, err := req.InvocContext().GetNode()
201 + Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
202 + nd, err := cmdenv.GetNode(env)
203 if err != nil {
223 - res.SetError(err, cmdkit.ErrNormal)
224 - return
204 + return err
205 }
206
207 if !nd.OnlineMode() {
228 - res.SetError(ErrNotOnline, cmdkit.ErrClient)
229 - return
208 + return ErrNotOnline
209 }
210
232 - err = nd.Reprovider.Trigger(req.Context())
211 + err = nd.Reprovider.Trigger(req.Context)
212 if err != nil {
234 - res.SetError(err, cmdkit.ErrNormal)
235 - return
213 + return err
214 }
215
238 - res.SetOutput(nil)
216 + return nil
217 },
218 }