input_windows.go 520 B

123456789101112131415161718192021222324252627282930
  1. package door
  2. import (
  3. "log"
  4. "syscall"
  5. )
  6. func Reader(handle syscall.Handle) {
  7. buffer := make([]byte, 1)
  8. WSA_Buffer := syscall.WSABuf{Len: 1, Buf: &buffer[0]}
  9. read := uint32(0)
  10. flags := uint32(0)
  11. for {
  12. err := syscall.WSARecv(handle, &WSA_Buffer, 1, &read, &flags, nil, nil)
  13. if err != nil {
  14. log.Printf("Reader ERR: %#v\n", err)
  15. close(readerChannel)
  16. break
  17. }
  18. if read == 1 {
  19. readerChannel <- buffer[0]
  20. } else {
  21. log.Printf("READ FAILED %d\n", read)
  22. close(readerChannel)
  23. break
  24. }
  25. }
  26. }