diff --git a/internal/msg.go b/internal/msg.go index 01647c1..b1478f2 100644 --- a/internal/msg.go +++ b/internal/msg.go @@ -18,7 +18,8 @@ type StatusUpdateMsg struct { // A WorkerInfoMsg is the information struct that describe // a worker, and sent from the manager to clients. type WorkerInfoMsg struct { - ID string `json:"id"` + ID string `json:"id"` + LastOnline time.Time `json:"last_online"` } type CmdVerb uint8 diff --git a/manager/server.go b/manager/server.go index 70a2b00..38aa77f 100644 --- a/manager/server.go +++ b/manager/server.go @@ -2,11 +2,13 @@ package manager import ( "fmt" - "github.com/gin-gonic/gin" - . "github.com/tuna/tunasync/internal" "net/http" "sync" "time" + + "github.com/gin-gonic/gin" + + . "github.com/tuna/tunasync/internal" ) const ( @@ -20,8 +22,9 @@ const ( ) type worker struct { - ID string `json:"id"` // worker name - Token string `json:"token"` // session token + ID string `json:"id"` // worker name + Token string `json:"token"` // session token + LastOnline time.Time `json:"last_online"` // last seen } var ( @@ -62,7 +65,7 @@ func (s *managerServer) listWorkers(c *gin.Context) { } for _, w := range workers { workerInfos = append(workerInfos, - WorkerInfoMsg{w.ID}) + WorkerInfoMsg{w.ID, w.LastOnline}) } c.JSON(http.StatusOK, workerInfos) }