40 lines
547 B
Go
40 lines
547 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"bufio"
|
||
|
"io"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
func lineChannel(r io.Reader) (chan []byte, chan error) {
|
||
|
lineChan := make(chan []byte, 100)
|
||
|
errChan := make(chan error)
|
||
|
|
||
|
reader := bufio.NewReader(r)
|
||
|
go func() {
|
||
|
for {
|
||
|
line, err := reader.ReadBytes('\n')
|
||
|
lineChan <- line
|
||
|
|
||
|
if err != nil {
|
||
|
errChan <- err
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
close(lineChan)
|
||
|
}()
|
||
|
|
||
|
return lineChan, errChan
|
||
|
}
|
||
|
|
||
|
func timerChannel(t time.Duration) chan bool {
|
||
|
timerChan := make(chan bool)
|
||
|
|
||
|
go func() {
|
||
|
time.Sleep(t)
|
||
|
timerChan <- true
|
||
|
}()
|
||
|
|
||
|
return timerChan
|
||
|
}
|