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
}