36 lines
627 B
Go
36 lines
627 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"bufio"
|
||
|
"encoding/json"
|
||
|
"log"
|
||
|
)
|
||
|
|
||
|
func handleWrite() {
|
||
|
var b []byte
|
||
|
var err error
|
||
|
for c := range commandsOut {
|
||
|
b, err = json.Marshal(c)
|
||
|
if err != nil {
|
||
|
log.Fatalf("failed to marshal %+v: %s", c, err)
|
||
|
}
|
||
|
commandConn.Write(append(b, byte('\n')))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func handleRead() {
|
||
|
var c *Command
|
||
|
scanner := bufio.NewScanner(commandConn)
|
||
|
for scanner.Scan() {
|
||
|
c = &Command{}
|
||
|
err := json.Unmarshal(scanner.Bytes(), c)
|
||
|
if err != nil {
|
||
|
log.Fatalf("failed to unmarshal %s: %s", string(scanner.Bytes()), err)
|
||
|
}
|
||
|
commandsIn <- c
|
||
|
}
|
||
|
if err := scanner.Err(); err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
}
|