package models import ( "git.wamblee.org/converge/pkg/comms" "time" ) type RendezVousId string type AgentGuid string type ClientGuid string type ClientId string type SessionType string type RemoteAddr string type Agent struct { Guid AgentGuid RemoteAddr RemoteAddr PublicId RendezVousId StartTime time.Time // TODO add remote address. EnvironmentInfo comms.EnvironmentInfo ExpiryTime time.Time } type Client struct { Guid ClientGuid RemoteAddr RemoteAddr PublicId RendezVousId ClientId ClientId AgentGuid AgentGuid StartTime time.Time SessionType SessionType EnvironmentInfo comms.EnvironmentInfo } // State is a description of the current state of converge. // Created by the server and used for updating the web client // and prometheus metrics. type State struct { Agents []Agent Clients []Client } func (state *State) Copy() *State { c := State{} c.Agents = make([]Agent, len(state.Agents)) c.Clients = make([]Client, len(state.Clients)) copy(c.Agents, state.Agents) copy(c.Clients, state.Clients) return &c }