|
@@ -12,7 +12,7 @@ import (
|
|
)
|
|
)
|
|
|
|
|
|
var ReaderInterval = time.Duration(200) * time.Millisecond
|
|
var ReaderInterval = time.Duration(200) * time.Millisecond
|
|
-var ReaderTimeval syscall.Timeval = syscall.Timeval{Sec: 0, Usec: 200}
|
|
|
|
|
|
+var ReaderTimeval syscall.Timeval = syscall.NsecToTimeval(int64(ReaderInterval))
|
|
|
|
|
|
// Output a nice string representation of the rune buffer.
|
|
// Output a nice string representation of the rune buffer.
|
|
func extended_output(buffer []rune) string {
|
|
func extended_output(buffer []rune) string {
|
|
@@ -384,6 +384,12 @@ func process(d *Door, newRune bool) {
|
|
// This "times out" every ReaderTimeval
|
|
// This "times out" every ReaderTimeval
|
|
func Reader(d *Door) {
|
|
func Reader(d *Door) {
|
|
// I need non-blocking reads here.
|
|
// I need non-blocking reads here.
|
|
|
|
+ /*
|
|
|
|
+ ReaderTimeval = syscall.Timeval{Sec: int64(ReaderInterval.Seconds()),
|
|
|
|
+ Usec: ReaderInterval.Microseconds() % time.Second.Microseconds()}
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ log.Println(ReaderInterval, ReaderTimeval)
|
|
|
|
|
|
readerBuffer = make([]rune, 0, READ_SIZE*2)
|
|
readerBuffer = make([]rune, 0, READ_SIZE*2)
|
|
|
|
|
|
@@ -403,12 +409,13 @@ func Reader(d *Door) {
|
|
var readbuffer [READ_SIZE]byte
|
|
var readbuffer [READ_SIZE]byte
|
|
var runebuffer bytes.Buffer
|
|
var runebuffer bytes.Buffer
|
|
var runeread = bufio.NewReaderSize(&runebuffer, 1)
|
|
var runeread = bufio.NewReaderSize(&runebuffer, 1)
|
|
|
|
+ var selectTimeval syscall.Timeval
|
|
|
|
|
|
for {
|
|
for {
|
|
clearAll(&fdset)
|
|
clearAll(&fdset)
|
|
set(&fdset, d.READFD)
|
|
set(&fdset, d.READFD)
|
|
-
|
|
|
|
- v, err := syscall.Select(d.READFD+1, &fdset, nil, nil, &ReaderTimeval)
|
|
|
|
|
|
+ selectTimeval = ReaderTimeval
|
|
|
|
+ v, err := syscall.Select(d.READFD+1, &fdset, nil, nil, &selectTimeval)
|
|
|
|
|
|
if err == syscall.EINTR {
|
|
if err == syscall.EINTR {
|
|
continue
|
|
continue
|