@cryptotaxi247 / kubo / commits / 20c40c3f1

fix commands interface

Jeromy committed Jan 24, 2015 at 08:06 UTC 20c40c3f104298c4ff43a19a5d00261ef3444733
1 file changed +23 -14
core/commands/dht.go
+23 -14
@@ -41,15 +41,17 @@ var queryDhtCmd = &cmds.Command{
41 Options: []cmds.Option{
42 cmds.BoolOption("verbose", "v", "Write extra information"),
43 },
44 - Run: func(req cmds.Request) (interface{}, error) {
44 + Run: func(req cmds.Request, res cmds.Response) {
45 n, err := req.Context().GetNode()
46 if err != nil {
47 - return nil, err
47 + res.SetError(err, cmds.ErrNormal)
48 + return
49 }
50
51 dht, ok := n.Routing.(*ipdht.IpfsDHT)
52 if !ok {
52 - return nil, errors.New("Routing service was not a dht")
53 + res.SetError(ErrNotDHT, cmds.ErrNormal)
54 + return
55 }
56
57 events := make(chan *notif.QueryEvent)
@@ -68,13 +70,14 @@ var queryDhtCmd = &cmds.Command{
70 }()
71
72 outChan := make(chan interface{})
73 + res.SetOutput((<-chan interface{})(outChan))
74 +
75 go func() {
76 defer close(outChan)
77 for e := range events {
78 outChan <- e
79 }
80 }()
77 - return outChan, nil
81 },
82 Marshalers: cmds.MarshalerMap{
83 cmds.Text: func(res cmds.Response) (io.Reader, error) {
@@ -141,20 +144,24 @@ FindProviders will return a list of peers who are able to provide the value requ
144 Options: []cmds.Option{
145 cmds.BoolOption("verbose", "v", "Write extra information"),
146 },
144 - Run: func(req cmds.Request) (interface{}, error) {
147 + Run: func(req cmds.Request, res cmds.Response) {
148 n, err := req.Context().GetNode()
149 if err != nil {
147 - return nil, err
150 + res.SetError(err, cmds.ErrNormal)
151 + return
152 }
153
154 dht, ok := n.Routing.(*ipdht.IpfsDHT)
155 if !ok {
152 - return nil, ErrNotDHT
156 + res.SetError(ErrNotDHT, cmds.ErrNormal)
157 + return
158 }
159
160 numProviders := 20
161
162 outChan := make(chan interface{})
163 + res.SetOutput((<-chan interface{})(outChan))
164 +
165 events := make(chan *notif.QueryEvent)
166 ctx := notif.RegisterForQueryEvents(req.Context().Context, events)
167
@@ -176,7 +183,6 @@ FindProviders will return a list of peers who are able to provide the value requ
183 })
184 }
185 }()
179 - return outChan, nil
186 },
187 Marshalers: cmds.MarshalerMap{
188 cmds.Text: func(res cmds.Response) (io.Reader, error) {
@@ -242,23 +248,28 @@ var findPeerDhtCmd = &cmds.Command{
248 Arguments: []cmds.Argument{
249 cmds.StringArg("peerID", true, true, "The peer to search for"),
250 },
245 - Run: func(req cmds.Request) (interface{}, error) {
251 + Run: func(req cmds.Request, res cmds.Response) {
252 n, err := req.Context().GetNode()
253 if err != nil {
248 - return nil, err
254 + res.SetError(err, cmds.ErrNormal)
255 + return
256 }
257
258 dht, ok := n.Routing.(*ipdht.IpfsDHT)
259 if !ok {
253 - return nil, ErrNotDHT
260 + res.SetError(ErrNotDHT, cmds.ErrNormal)
261 + return
262 }
263
264 pid, err := peer.IDB58Decode(req.Arguments()[0])
265 if err != nil {
258 - return nil, err
266 + res.SetError(err, cmds.ErrNormal)
267 + return
268 }
269
270 outChan := make(chan interface{})
271 + res.SetOutput((<-chan interface{})(outChan))
272 +
273 events := make(chan *notif.QueryEvent)
274 ctx := notif.RegisterForQueryEvents(req.Context().Context, events)
275
@@ -285,8 +296,6 @@ var findPeerDhtCmd = &cmds.Command{
296 Responses: []*peer.PeerInfo{&pi},
297 })
298 }()
288 -
289 - return outChan, nil
299 },
300 Marshalers: cmds.MarshalerMap{
301 cmds.Text: func(res cmds.Response) (io.Reader, error) {