File tree Expand file tree Collapse file tree 1 file changed +10
-20
lines changed Expand file tree Collapse file tree 1 file changed +10
-20
lines changed Original file line number Diff line number Diff line change @@ -189,33 +189,23 @@ func (s *StdioServer) processInputStream(ctx context.Context, reader *bufio.Read
189
189
// returns an empty string and the context's error. EOF is returned when the input
190
190
// stream is closed.
191
191
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 )
196
198
197
199
go func () {
198
200
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 }
210
202
}()
211
203
212
204
select {
213
205
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
219
209
}
220
210
}
221
211
You can’t perform that action at this time.
0 commit comments