Skip to content

Commit ec6b89c

Browse files
author
Marcos
committed
refactor: remove redudant signaling channels
1 parent b690e80 commit ec6b89c

File tree

1 file changed

+10
-20
lines changed

1 file changed

+10
-20
lines changed

server/stdio.go

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -189,33 +189,23 @@ func (s *StdioServer) processInputStream(ctx context.Context, reader *bufio.Read
189189
// returns an empty string and the context's error. EOF is returned when the input
190190
// stream is closed.
191191
func (s *StdioServer) readNextLine(ctx context.Context, reader *bufio.Reader) (string, error) {
192-
readChan := make(chan string, 1)
193-
errChan := make(chan error, 1)
194-
done := make(chan struct{})
195-
defer close(done)
192+
type result struct {
193+
line string
194+
err error
195+
}
196+
197+
resultCh := make(chan result, 1)
196198

197199
go func() {
198200
line, err := reader.ReadString('\n')
199-
if err != nil {
200-
select {
201-
case errChan <- err:
202-
case <-done:
203-
}
204-
return
205-
}
206-
select {
207-
case readChan <- line:
208-
case <-done:
209-
}
201+
resultCh <- result{line: line, err: err}
210202
}()
211203

212204
select {
213205
case <-ctx.Done():
214-
return "", ctx.Err()
215-
case err := <-errChan:
216-
return "", err
217-
case line := <-readChan:
218-
return line, nil
206+
return "", nil
207+
case res := <-resultCh:
208+
return res.line, res.err
219209
}
220210
}
221211

0 commit comments

Comments
 (0)