X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=door_daemon_go%2Funix_socket_server.go;h=1d5424be0802784fc538cd592803186687a7aaf1;hb=fcb34f3206aa8f8293cb379b2b4f0538d4288dec;hp=a2e710a80156058c3544a193b60668829d0f3ad1;hpb=204ca2fe92c8bedf87ab5ae4d1c1bc0660b1a3dd;p=svn42.git diff --git a/door_daemon_go/unix_socket_server.go b/door_daemon_go/unix_socket_server.go index a2e710a..1d5424b 100644 --- a/door_daemon_go/unix_socket_server.go +++ b/door_daemon_go/unix_socket_server.go @@ -2,6 +2,12 @@ package main import "fmt" import "net" import "bufio" +import "strings" + +var cmdHandler = map[string]func([]string,string,*bufio.ReadWriter ) { + "test":handleCmdTest, +} + func readLineSafe(rw *bufio.ReadWriter) (string, error) { wasPrefix:=false @@ -40,17 +46,38 @@ func handleConnection(c net.Conn) () { for { line,err:=readLineSafe(client) if err != nil { - fmt.Println(err.Error()) + if err.Error() != "EOF" { + fmt.Printf("Error: readLineSafe returned %v\n",err.Error()) + } else { + fmt.Printf("Connection closed by remote host\n"); + } c.Close() return } if line == "" { continue } - fmt.Printf("Received: %v\n", string(line)) + fmt.Printf("Received: %v\n", line) + tokens:=strings.Fields(line) + remainStr:=strings.Join(tokens[1:]," ") + handleCmd(tokens,remainStr,client) } } +func handleCmd(tokens []string, remainStr string,client * bufio.ReadWriter) { + cmd:=tokens[0] + func_ptr,present := cmdHandler[cmd] + if present { + func_ptr(tokens, remainStr,client) + } else { + fmt.Printf("Error: unknown Cmd: %v\n", cmd) + } +} + +func handleCmdTest(tokens []string, remainStr string, client * bufio.ReadWriter) { + //cmd:=tokens[0] + fmt.Printf("Test: %v\n", remainStr) +} func main() { ln, err := net.Listen("unix", "/tmp/test.sock")