|
@@ -54,6 +54,10 @@ func clearAll(fdSetPtr *syscall.FdSet) {
|
|
|
// Is there a key waiting?
|
|
|
// Returns true on key, or if hungup/time out
|
|
|
func (d *Door) HasKey() bool {
|
|
|
+ if d.Disconnected {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+
|
|
|
if d.TimeLeft() < 0 {
|
|
|
return true
|
|
|
}
|
|
@@ -96,8 +100,10 @@ func (d *Door) getch() int {
|
|
|
buffer := make([]byte, 1)
|
|
|
r, err := syscall.Read(d.READFD, buffer)
|
|
|
if r != 1 {
|
|
|
+ // I'm getting write error here... (when disconnected)
|
|
|
fmt.Printf("Read said ready, but didn't read a character %d %v.", r, err)
|
|
|
// hangup
|
|
|
+ d.Disconnected = true
|
|
|
return -2
|
|
|
}
|
|
|
return int(buffer[0])
|
|
@@ -119,10 +125,13 @@ func (d *Door) getkey_or_pushback() int {
|
|
|
func (d *Door) GetKey() int {
|
|
|
var c, c2 int
|
|
|
|
|
|
+ if d.Disconnected {
|
|
|
+ return -2
|
|
|
+ }
|
|
|
+
|
|
|
if d.TimeLeft() < 0 {
|
|
|
return -3
|
|
|
}
|
|
|
-
|
|
|
c = d.getkey_or_pushback()
|
|
|
|
|
|
if c < 0 {
|
|
@@ -296,6 +305,10 @@ func (d *Door) GetKey() int {
|
|
|
}
|
|
|
|
|
|
func (d *Door) WaitKey(secs int64, usecs int64) int {
|
|
|
+ if d.Disconnected {
|
|
|
+ return -2
|
|
|
+ }
|
|
|
+
|
|
|
// var fdsetRead, fdsetWrite, fdsete syscall.FdSet
|
|
|
var fdsetRead syscall.FdSet
|
|
|
// fdsetWrite := syscall.FdSet
|
|
@@ -331,8 +344,10 @@ func (d *Door) WaitKey(secs int64, usecs int64) int {
|
|
|
buffer := make([]byte, 1)
|
|
|
r, err := syscall.Read(d.READFD, buffer)
|
|
|
if r != 1 {
|
|
|
+ // I'm getting write error here... (when disconnected)
|
|
|
fmt.Printf("Read said ready, but didn't read a character %d %v.", r, err)
|
|
|
// hangup
|
|
|
+ d.Disconnected = true
|
|
|
return -2
|
|
|
}
|
|
|
return int(buffer[0])
|