| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package server
- import (
- "log"
- "net/http"
- "strconv"
- "strings"
- "time"
- )
- // Handle incoming websocket connections
- func (server *Server) handleConnections(w http.ResponseWriter, r *http.Request) {
- conn, err := upgrader.Upgrade(w, r, nil)
- if err != nil {
- log.Println(err)
- return
- }
- // defer conn.Close()
- log.Println("Incoming connection")
- // Check for register
- var registered bool
- var msgs []string
- for !registered {
- _, message, err := conn.ReadMessage()
- if err != nil {
- log.Println("Error reading message:", err)
- break
- }
- msgs = server.parseMessage(message)
- if string(msgs[0]) == "register" {
- registered = true
- }
- }
- log.Println("Connected to agent")
- // Create var of type Agent
- cores_int, err := strconv.Atoi(msgs[2])
- if err != nil {
- log.Fatal("ERROR: failed strconv.Atoi(cpu cores):", err)
- }
- mem_max_string := strings.ReplaceAll(msgs[3], "GB", "")
- mem_max_float, err := strconv.ParseFloat(mem_max_string, 64)
- if err != nil {
- log.Fatal("ERROR: failed strconv.ParseFloat():", err)
- }
- agent := Agent{
- Name: msgs[1],
- Reg: time.Now(),
- Cores: cores_int,
- Mem_max: mem_max_float,
- TaskId: 0,
- conn: conn,
- }
- // Dump it into server.Agents
- server.Agents[msgs[1]] = &agent
- defer server.closeConnection(msgs[1])
- go server.readMessages(agent)
- server.writeMessages(conn)
- }
|