converge/pkg/models/state.go

54 lines
1.1 KiB
Go

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
}