| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | package modelsimport (	"time")// Metrics - metrics structtype Metrics struct {	Network       string            `json:"network" bson:"network" yaml:"network"`	NodeID        string            `json:"node_id" bson:"node_id" yaml:"node_id"`	NodeName      string            `json:"node_name" bson:"node_name" yaml:"node_name"`	Connectivity  map[string]Metric `json:"connectivity" bson:"connectivity" yaml:"connectivity"`	FailoverPeers map[string]string `json:"needsfailover" bson:"needsfailover" yaml:"needsfailover"`}// Metric - holds a metric for data between nodestype Metric struct {	NodeName         string        `json:"node_name" bson:"node_name" yaml:"node_name"`	Uptime           int64         `json:"uptime" bson:"uptime" yaml:"uptime"`	TotalTime        int64         `json:"totaltime" bson:"totaltime" yaml:"totaltime"`	Latency          int64         `json:"latency" bson:"latency" yaml:"latency"`	TotalReceived    int64         `json:"totalreceived" bson:"totalreceived" yaml:"totalreceived"`	TotalSent        int64         `json:"totalsent" bson:"totalsent" yaml:"totalsent"`	ActualUptime     time.Duration `json:"actualuptime" bson:"actualuptime" yaml:"actualuptime"`	PercentUp        float64       `json:"percentup" bson:"percentup" yaml:"percentup"`	Connected        bool          `json:"connected" bson:"connected" yaml:"connected"`	CollectedByProxy bool          `json:"collected_by_proxy" bson:"collected_by_proxy" yaml:"collected_by_proxy"`}// IDandAddr - struct to hold ID and primary Addresstype IDandAddr struct {	ID              string `json:"id" bson:"id" yaml:"id"`	Address         string `json:"address" bson:"address" yaml:"address"`	Name            string `json:"name" bson:"name" yaml:"name"`	IsServer        string `json:"isserver" bson:"isserver" yaml:"isserver" validate:"checkyesorno"`	Network         string `json:"network" bson:"network" yaml:"network" validate:"network"`	ProxyListenPort int    `json:"proxy_listen_port" yaml:"proxy_listen_port"`}// HostInfoMap - map of host public keys to host networking infotype HostInfoMap map[string]HostNetworkInfo// HostNetworkInfo - holds info related to host networking (used for client side peer calculations)type HostNetworkInfo struct {	Interfaces      []Iface `json:"interfaces" yaml:"interfaces"`	ProxyListenPort int     `json:"proxy_listen_port" yaml:"proxy_listen_port"`}// PeerMap - peer map for ids and addresses in metricstype PeerMap map[string]IDandAddr// HostPeerMap - host peer map for ids and addressestype HostPeerMap map[string]map[string]IDandAddr// MetricsMap - map for holding multiple metrics in memorytype MetricsMap map[string]Metrics// NetworkMetrics - metrics model for all nodes in a networktype NetworkMetrics struct {	Nodes MetricsMap `json:"nodes" bson:"nodes" yaml:"nodes"`}
 |