|
@@ -15,31 +15,7 @@ func Writer(d *Door) {
|
|
|
var Closed bool = false
|
|
|
|
|
|
for {
|
|
|
- /*
|
|
|
- select {
|
|
|
- case <-d.closeChannel:
|
|
|
- if !d.WriterClosed {
|
|
|
- d.WriterClosed = true
|
|
|
- close(d.writerChannel)
|
|
|
- }
|
|
|
- log.Println("~Writer")
|
|
|
- return
|
|
|
- default:
|
|
|
- }
|
|
|
- */
|
|
|
-
|
|
|
select {
|
|
|
- /*
|
|
|
- case <-d.closeChannel:
|
|
|
- // Not safe from data races -- not synced
|
|
|
- if !d.WriterClosed {
|
|
|
- d.WriterClosed = true
|
|
|
- close(d.writerChannel)
|
|
|
- }
|
|
|
- // close(d.writerChannel)
|
|
|
- log.Println("~Writer")
|
|
|
- return
|
|
|
- */
|
|
|
case output, ok := <-d.writerChannel:
|
|
|
if !ok {
|
|
|
log.Println("closeChannel")
|
|
@@ -48,47 +24,18 @@ func Writer(d *Door) {
|
|
|
if !d.WriterClosed {
|
|
|
// Safe from data races, writerChannel unbuffered
|
|
|
d.WriterClosed = true
|
|
|
- // close(d.writerChannel)
|
|
|
}
|
|
|
d.writerMutex.Unlock()
|
|
|
- /*
|
|
|
- if !d.Disconnect() {
|
|
|
- // d.Disconnected = true
|
|
|
- // atomic.StoreInt32(&d.Disconnected, 1)
|
|
|
- // if !ok, the channel is already closed...
|
|
|
- // close(d.writerChannel)
|
|
|
- }
|
|
|
- */
|
|
|
log.Println("~Writer")
|
|
|
return
|
|
|
|
|
|
- // d.closeChannel <- true
|
|
|
- // continue
|
|
|
} else {
|
|
|
// log.Println("output")
|
|
|
/* Handle cases where we're updating a portion of the screen.
|
|
|
When we SavePos, also save/restore the last color set.
|
|
|
*/
|
|
|
if output == "" {
|
|
|
- // Close Channel
|
|
|
- /*
|
|
|
- if !d.WriterClosed {
|
|
|
- d.WriterClosed = true
|
|
|
- close(d.writerChannel)
|
|
|
- }
|
|
|
- */
|
|
|
- /*
|
|
|
- d.writerMutex.Lock()
|
|
|
- if !d.WriterClosed {
|
|
|
- d.WriterClosed = true
|
|
|
- close(d.writerChannel)
|
|
|
- //
|
|
|
- }
|
|
|
- */
|
|
|
Closed = true
|
|
|
- // d.SafeWriterClose()
|
|
|
- // log.Println("~Writer")
|
|
|
- // return
|
|
|
continue
|
|
|
}
|
|
|
|
|
@@ -116,37 +63,9 @@ func Writer(d *Door) {
|
|
|
// close(d.writerChannel)
|
|
|
}
|
|
|
d.writerMutex.Unlock()
|
|
|
- //d.SafeWriterClose()
|
|
|
-
|
|
|
- /*
|
|
|
- d.WriterClosed = true
|
|
|
- close(d.writerChannel)
|
|
|
- */
|
|
|
- /*
|
|
|
- if !d.Disconnect() {
|
|
|
- // d.Disconnected = true
|
|
|
- // atomic.StoreInt32(&d.Disconnected, 1)
|
|
|
- close(d.writerChannel)
|
|
|
- }
|
|
|
- */
|
|
|
- // log.Println("~Writer")
|
|
|
- // return
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-/*
|
|
|
-func Writer(handle int, writerChannel *chan string) {
|
|
|
- for output := range *writerChannel {
|
|
|
- buffer := []byte(output)
|
|
|
- n, err := syscall.Write(handle, buffer)
|
|
|
- if (err != nil) || (n != len(buffer)) {
|
|
|
- close(*writerChannel)
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-*/
|