From bb236cf5ad189859a3fdda0f8fa8240daafdde37 Mon Sep 17 00:00:00 2001 From: Overbool Date: Wed, 7 Nov 2018 16:58:36 +0800 Subject: [PATCH] cmds/refs: use emit directly License: MIT Signed-off-by: Overbool --- core/commands/refs.go | 41 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/core/commands/refs.go b/core/commands/refs.go index ad9eab43c..710679b6f 100644 --- a/core/commands/refs.go +++ b/core/commands/refs.go @@ -102,32 +102,24 @@ NOTE: List all references recursively by using the flag '-r'. return err } - out := make(chan interface{}) + rw := RefWriter{ + res: res, + DAG: n.DAG, + Ctx: ctx, + Unique: unique, + PrintFmt: format, + MaxDepth: maxDepth, + } - go func() { - defer close(out) - - rw := RefWriter{ - out: out, - DAG: n.DAG, - Ctx: ctx, - Unique: unique, - PrintFmt: format, - MaxDepth: maxDepth, - } - - for _, o := range objs { - if _, err := rw.WriteRefs(o); err != nil { - select { - case out <- &RefWrapper{Err: err.Error()}: - case <-ctx.Done(): - } - return + for _, o := range objs { + if _, err := rw.WriteRefs(o); err != nil { + if err := res.Emit(&RefWrapper{Err: err.Error()}); err != nil { + return err } } - }() + } - return res.Emit(out) + return nil }, Encoders: refsEncoderMap, Type: RefWrapper{}, @@ -190,7 +182,7 @@ type RefWrapper struct { } type RefWriter struct { - out chan interface{} + res cmds.ResponseEmitter DAG ipld.DAGService Ctx context.Context @@ -337,6 +329,5 @@ func (rw *RefWriter) WriteEdge(from, to cid.Cid, linkname string) error { s += to.String() } - rw.out <- &RefWrapper{Ref: s} - return nil + return rw.res.Emit(&RefWrapper{Ref: s}) }