123456789101112131415161718192021222324252627282930313233343536 |
- package door
- import (
- "log"
- "syscall"
- )
- func Reader(handle int, readerChannel *chan byte) {
- // I don't need the select anymore. Let the read block.
- defer func() {
- if err := recover(); err != nil {
- log.Printf("Reader: %#v\n", err)
- }
- }()
- buffer := make([]byte, 1)
- for {
- read, err := syscall.Read(handle, buffer)
- if err != nil {
- log.Printf("Reader ERR: %#v\n", err)
- close(*readerChannel)
- break
- }
- if read == 1 {
- *readerChannel <- buffer[0]
- } else {
- log.Printf("READ FAILED %d\n", read)
- close(*readerChannel)
- break
- }
- }
- }
- func CloseReader(handle int) {
- syscall.Close(handle)
- }
|