commands/pin: fix gofmt and block
License: MIT Signed-off-by: Overbool <overbool.xu@gmail.com>
Overbool committed
Oct 27, 2018 at 12:57 UTC
1e7149cd00c3268a8a17019981d40609f433e556
1 file changed
+33
-21
core/commands/pin.go
+33
-21
@@ -90,7 +90,6 @@ var addPinCmd = &cmds.Command{
90
}
91
92
out := make(chan interface{})
93
- res.Emit(out)
93
94
v := new(dag.ProgressTracker)
95
ctx := v.DeriveContext(req.Context)
@@ -105,30 +104,43 @@ var addPinCmd = &cmds.Command{
104
ch <- pinResult{pins: added, err: err}
105
}()
106
108
- ticker := time.NewTicker(500 * time.Millisecond)
109
- defer ticker.Stop()
110
- defer close(out)
111
- for {
112
- select {
113
- case val := <-ch:
114
- if val.err != nil {
115
- return val.err
116
- }
107
+ errC := make(chan error)
108
+ go func() {
109
+ var err error
110
+ ticker := time.NewTicker(500 * time.Millisecond)
111
+ defer ticker.Stop()
112
+ defer func() { errC <- err }()
113
+ defer close(out)
114
118
- if pv := v.Value(); pv != 0 {
115
+ for {
116
+ select {
117
+ case val := <-ch:
118
+ if val.err != nil {
119
+ err = val.err
120
+ return
121
+ }
122
+
123
+ if pv := v.Value(); pv != 0 {
124
+ out <- &AddPinOutput{Progress: v.Value()}
125
+ }
126
+ out <- &AddPinOutput{Pins: cidsToStrings(val.pins)}
127
+ return
128
+ case <-ticker.C:
129
out <- &AddPinOutput{Progress: v.Value()}
130
+ case <-ctx.Done():
131
+ log.Error(ctx.Err())
132
+ err = ctx.Err()
133
+ return
134
}
121
- out <- &AddPinOutput{Pins: cidsToStrings(val.pins)}
122
- return nil
123
- case <-ticker.C:
124
- out <- &AddPinOutput{Progress: v.Value()}
125
- case <-ctx.Done():
126
- log.Error(ctx.Err())
127
- return ctx.Err()
135
}
136
+ }()
137
+
138
+ err = res.Emit(out)
139
+ if err != nil {
140
+ return err
141
}
142
131
- return nil
143
+ return <-errC
144
},
145
Encoders: cmds.EncoderMap{
146
cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *AddPinOutput) error {
@@ -294,9 +306,9 @@ Example:
306
307
if err != nil {
308
return err
297
- } else {
298
- return res.Emit(&RefKeyList{Keys: keys})
309
}
310
+
311
+ return res.Emit(&RefKeyList{Keys: keys})
312
},
313
Type: RefKeyList{},
314
Encoders: cmds.EncoderMap{