File tree Expand file tree Collapse file tree 1 file changed +28
-4
lines changed
Expand file tree Collapse file tree 1 file changed +28
-4
lines changed Original file line number Diff line number Diff line change @@ -2,17 +2,41 @@ package can
22
33import (
44 "bytes"
5+ "io"
6+ "time"
57)
68
79type echoReadWriteCloser struct {
8- buf bytes.Buffer
10+ buf bytes.Buffer
11+ closed bool
912}
1013
1114// NewEchoReadWriteCloser returns a ReadWriteCloser which echoes received bytes.
1215func NewEchoReadWriteCloser () ReadWriteCloser {
1316 return NewReadWriteCloser (& echoReadWriteCloser {})
1417}
1518
16- func (rw * echoReadWriteCloser ) Read (b []byte ) (n int , err error ) { return rw .buf .Read (b ) }
17- func (rw * echoReadWriteCloser ) Write (b []byte ) (n int , err error ) { return rw .buf .Write (b ) }
18- func (rw * echoReadWriteCloser ) Close () error { return nil }
19+ func (rw * echoReadWriteCloser ) Read (b []byte ) (n int , err error ) {
20+ for {
21+ if rw .buf .Len () > 0 {
22+ return rw .buf .Read (b )
23+ }
24+
25+ if rw .closed == true {
26+ break
27+ }
28+
29+ <- time .After (time .Millisecond * 1 )
30+ }
31+
32+ return 0 , io .EOF
33+ }
34+
35+ func (rw * echoReadWriteCloser ) Write (b []byte ) (n int , err error ) {
36+ return rw .buf .Write (b )
37+ }
38+
39+ func (rw * echoReadWriteCloser ) Close () error {
40+ rw .closed = true
41+ return nil
42+ }
You can’t perform that action at this time.
0 commit comments