cmds/refs: use emit directly
License: MIT Signed-off-by: Overbool <overbool.xu@gmail.com>
Overbool committed
Nov 7, 2018 at 16:58 UTC
bb236cf5ad189859a3fdda0f8fa8240daafdde37
1 file changed
+16
-25
core/commands/refs.go
+16
-25
@@ -102,32 +102,24 @@ NOTE: List all references recursively by using the flag '-r'.
102
return err
103
}
104
105
- out := make(chan interface{})
106
-
107
- go func() {
108
- defer close(out)
109
-
110
- rw := RefWriter{
111
- out: out,
112
- DAG: n.DAG,
113
- Ctx: ctx,
114
- Unique: unique,
115
- PrintFmt: format,
116
- MaxDepth: maxDepth,
117
- }
105
+ rw := RefWriter{
106
+ res: res,
107
+ DAG: n.DAG,
108
+ Ctx: ctx,
109
+ Unique: unique,
110
+ PrintFmt: format,
111
+ MaxDepth: maxDepth,
112
+ }
113
119
- for _, o := range objs {
120
- if _, err := rw.WriteRefs(o); err != nil {
121
- select {
122
- case out <- &RefWrapper{Err: err.Error()}:
123
- case <-ctx.Done():
124
- }
125
- return
114
+ for _, o := range objs {
115
+ if _, err := rw.WriteRefs(o); err != nil {
116
+ if err := res.Emit(&RefWrapper{Err: err.Error()}); err != nil {
117
+ return err
118
}
119
}
128
- }()
120
+ }
121
130
- return res.Emit(out)
122
+ return nil
123
},
124
Encoders: refsEncoderMap,
125
Type: RefWrapper{},
@@ -190,7 +182,7 @@ type RefWrapper struct {
182
}
183
184
type RefWriter struct {
193
- out chan interface{}
185
+ res cmds.ResponseEmitter
186
DAG ipld.DAGService
187
Ctx context.Context
188
@@ -337,6 +329,5 @@ func (rw *RefWriter) WriteEdge(from, to cid.Cid, linkname string) error {
329
s += to.String()
330
}
331
340
- rw.out <- &RefWrapper{Ref: s}
341
- return nil
332
+ return rw.res.Emit(&RefWrapper{Ref: s})
333
}