Add buffer to pipe reader
This commit is contained in:
@@ -1,9 +1,11 @@
|
|||||||
package exec
|
package exec
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/AlexxIT/go2rtc/pkg/core"
|
"bufio"
|
||||||
"io"
|
"io"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
|
||||||
|
"github.com/AlexxIT/go2rtc/pkg/core"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PipeCloser - return StdoutPipe that Kill cmd on Close call
|
// PipeCloser - return StdoutPipe that Kill cmd on Close call
|
||||||
@@ -13,14 +15,16 @@ func PipeCloser(cmd *exec.Cmd) (io.ReadCloser, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return pipeCloser{stdout, cmd}, nil
|
// add buffer for pipe reader to reduce syscall
|
||||||
|
return pipeCloser{bufio.NewReaderSize(stdout, core.BufferSize), stdout, cmd}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type pipeCloser struct {
|
type pipeCloser struct {
|
||||||
io.ReadCloser
|
io.Reader
|
||||||
|
io.Closer
|
||||||
cmd *exec.Cmd
|
cmd *exec.Cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p pipeCloser) Close() error {
|
func (p pipeCloser) Close() error {
|
||||||
return core.Any(p.ReadCloser.Close(), p.cmd.Process.Kill(), p.cmd.Wait())
|
return core.Any(p.Closer.Close(), p.cmd.Process.Kill(), p.cmd.Wait())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user