提交 e332af8e 作者: Steven Allen

commands: fix a bunch of tiny commands-lib issues

* Always check errors returned by emit. Otherwise, we may not notice when the
  client goes away.
* Make sure to use EmitOnce instead of Emit when appropriate. Otherwise, we
  break javascript.

(thanks Magik6k for finding this before we cut the release...)

License: MIT
Signed-off-by: 's avatarSteven Allen <steven@stebalien.com>
上级 f8375ec7
...@@ -188,7 +188,7 @@ format. ...@@ -188,7 +188,7 @@ format.
} }
out = final out = final
} }
return res.Emit(&out) return cmds.EmitOnce(res, &out)
}, },
} }
...@@ -219,7 +219,7 @@ var DagResolveCmd = &cmds.Command{ ...@@ -219,7 +219,7 @@ var DagResolveCmd = &cmds.Command{
return err return err
} }
return res.Emit(&ResolveOutput{ return cmds.EmitOnce(res, &ResolveOutput{
Cid: lastCid, Cid: lastCid,
RemPath: path.Join(rem), RemPath: path.Join(rem),
}) })
......
...@@ -77,7 +77,7 @@ The resolver can recursively resolve: ...@@ -77,7 +77,7 @@ The resolver can recursively resolve:
if err != nil { if err != nil {
return err return err
} }
return res.Emit(&ncmd.ResolvedPath{Path: output}) return cmds.EmitOnce(res, &ncmd.ResolvedPath{Path: output})
}, },
Encoders: cmds.EncoderMap{ Encoders: cmds.EncoderMap{
cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *ncmd.ResolvedPath) error { cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *ncmd.ResolvedPath) error {
......
...@@ -105,12 +105,14 @@ This command outputs data in the following encodings: ...@@ -105,12 +105,14 @@ This command outputs data in the following encodings:
return err return err
} }
res.Emit(&pubsubMessage{ if err := res.Emit(&pubsubMessage{
Data: msg.Data(), Data: msg.Data(),
From: []byte(msg.From()), From: []byte(msg.From()),
Seqno: msg.Seq(), Seqno: msg.Seq(),
TopicIDs: msg.Topics(), TopicIDs: msg.Topics(),
}) }); err != nil {
return err
}
} }
}, },
Encoders: cmds.EncoderMap{ Encoders: cmds.EncoderMap{
......
...@@ -127,14 +127,20 @@ Example: ...@@ -127,14 +127,20 @@ Example:
for { for {
if pfound { if pfound {
stats := nd.Reporter.GetBandwidthForPeer(pid) stats := nd.Reporter.GetBandwidthForPeer(pid)
res.Emit(&stats) if err := res.Emit(&stats); err != nil {
return err
}
} else if tfound { } else if tfound {
protoId := protocol.ID(tstr) protoId := protocol.ID(tstr)
stats := nd.Reporter.GetBandwidthForProtocol(protoId) stats := nd.Reporter.GetBandwidthForProtocol(protoId)
res.Emit(&stats) if err := res.Emit(&stats); err != nil {
return err
}
} else { } else {
totals := nd.Reporter.GetBandwidthTotals() totals := nd.Reporter.GetBandwidthTotals()
res.Emit(&totals) if err := res.Emit(&totals); err != nil {
return err
}
} }
if !doPoll { if !doPoll {
return nil return nil
...@@ -142,7 +148,7 @@ Example: ...@@ -142,7 +148,7 @@ Example:
select { select {
case <-time.After(interval): case <-time.After(interval):
case <-req.Context.Done(): case <-req.Context.Done():
return nil return req.Context.Err()
} }
} }
}, },
......
...@@ -57,7 +57,7 @@ represent it. ...@@ -57,7 +57,7 @@ represent it.
c := node.Cid() c := node.Cid()
fi.FileName() fi.FileName()
return res.Emit(&coreiface.AddEvent{ return cmds.EmitOnce(res, &coreiface.AddEvent{
Name: fi.FileName(), Name: fi.FileName(),
Hash: c.String(), Hash: c.String(),
}) })
......
...@@ -40,7 +40,7 @@ var VersionCmd = &cmds.Command{ ...@@ -40,7 +40,7 @@ var VersionCmd = &cmds.Command{
cmdkit.BoolOption(versionAllOptionName, "Show all version information"), cmdkit.BoolOption(versionAllOptionName, "Show all version information"),
}, },
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error { Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
return res.Emit(&VersionOutput{ return cmds.EmitOnce(res, &VersionOutput{
Version: version.CurrentVersionNumber, Version: version.CurrentVersionNumber,
Commit: version.CurrentCommit, Commit: version.CurrentCommit,
Repo: fmt.Sprint(fsrepo.RepoVersion), Repo: fmt.Sprint(fsrepo.RepoVersion),
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论