123456789101112131415161718192021222324252627282930313233343536 |
- package door
- import (
- "log"
- "syscall"
- )
- func Reader(handle syscall.Handle, readerChannel *chan byte) {
- defer func() {
- if err := recover(); err != nil {
- log.Printf("Reader: %#v\n", err)
- }
- }()
- buffer := make([]byte, 1)
- WSA_Buffer := syscall.WSABuf{Len: 1, Buf: &buffer[0]}
- read := uint32(0)
- flags := uint32(0)
- for {
- err := syscall.WSARecv(handle, &WSA_Buffer, 1, &read, &flags, nil, nil)
- 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
- }
- }
- }
|