53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
|
package server
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"log"
|
||
|
"strconv"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
// Rewrite to become a general input handler
|
||
|
func (server *Server) readMessages(agent Agent) {
|
||
|
for {
|
||
|
_, message, err := agent.conn.ReadMessage()
|
||
|
if err != nil {
|
||
|
log.Println("Error reading message:", err)
|
||
|
break
|
||
|
}
|
||
|
// log.Printf("Received(%d): %s\n", messageType, message)
|
||
|
|
||
|
msgs := server.parseMessage(message)
|
||
|
|
||
|
if msgs[0] == "update" {
|
||
|
cpu_usg, err := strconv.Atoi(msgs[1])
|
||
|
if err != nil {
|
||
|
fmt.Println("ERROR: converting string to int", err)
|
||
|
}
|
||
|
server.Agents[agent.Name].Cpu = append(server.Agents[agent.Name].Cpu, cpu_usg)
|
||
|
server.Agents[agent.Name].Cpu = server.pruneIntSlice(server.Agents[agent.Name].Cpu)
|
||
|
|
||
|
mem_usg_string := strings.ReplaceAll(msgs[2], "GB", "")
|
||
|
mem_usg_float, err := strconv.ParseFloat(mem_usg_string, 64)
|
||
|
if err != nil {
|
||
|
log.Fatal("ERROR: failed strconv.ParseFloat():", err)
|
||
|
}
|
||
|
server.Agents[agent.Name].Mem_usg = append(server.Agents[agent.Name].Mem_usg, mem_usg_float)
|
||
|
server.Agents[agent.Name].Mem_usg = server.pruneFloat64Slice(server.Agents[agent.Name].Mem_usg)
|
||
|
|
||
|
taskId, err := strconv.Atoi(msgs[3])
|
||
|
if err != nil {
|
||
|
log.Println("ERROR: cannot convert taskId:", err)
|
||
|
}
|
||
|
server.Agents[agent.Name].TaskId = taskId
|
||
|
}
|
||
|
|
||
|
if msgs[0] == "deregister" {
|
||
|
server.closeConnection(agent.Name)
|
||
|
}
|
||
|
|
||
|
// This sets the time-out for any incoming messages.
|
||
|
// conn.SetReadDeadline(time.Now().Add(10 * time.Second))
|
||
|
}
|
||
|
}
|