...
1package main
2
3import (
4 "fmt"
5 "io"
6)
7
8type comDefaultReader struct {
9 pipe io.ReadCloser
10 notused_printer *LinePrefixPipe
11}
12
13func newDefaultReader(pipe io.ReadCloser) *comDefaultReader {
14 c := &comDefaultReader{pipe: pipe, notused_printer: NewLinePrefixPipe(pipe)}
15 go c.read_loop()
16 return nil
17}
18func (r *comDefaultReader) Read([]byte) (int, error) {
19 return 0, nil
20}
21func (r *comDefaultReader) newBytes(buf []byte) error {
22 s := string(buf)
23 fmt.Print(s)
24 return nil
25}
26func (r *comDefaultReader) read_loop() {
27 buf := make([]byte, 8192)
28 var out_err error
29 for {
30 n, read_err := r.pipe.Read(buf)
31 if n != 0 {
32 xerr := r.newBytes(buf[:n])
33 if xerr != nil {
34 out_err = xerr
35 break
36 }
37 }
38 if read_err != nil {
39 if read_err != io.EOF {
40 out_err = read_err
41 }
42 break
43 }
44 }
45 if out_err != nil {
46 fmt.Printf("Error reading: %s\n", out_err)
47 }
48
49}
View as plain text