statusmonitor/data.go

60 lines
1.4 KiB
Go
Raw Permalink Normal View History

2017-12-16 11:54:21 +00:00
package main
// Data holds actual data values, being a buffer for
// UI widges and responsible for flushing/updating/deleting
// old values.
type Data struct {
2018-01-10 21:27:57 +00:00
cpu *CircularBuffer
2018-01-18 10:37:18 +00:00
mem *CircularBuffer
2018-01-10 21:27:57 +00:00
txBytes *CircularBuffer
rxBytes *CircularBuffer
2017-12-16 11:54:21 +00:00
}
// NewData inits new data object.
func NewData(historyLimit int) *Data {
2017-12-16 11:54:21 +00:00
return &Data{
cpu: NewCircularBuffer(historyLimit),
mem: NewCircularBuffer(historyLimit),
txBytes: NewCircularBuffer(historyLimit),
rxBytes: NewCircularBuffer(historyLimit),
2017-12-16 11:54:21 +00:00
}
}
2018-01-18 10:37:18 +00:00
// AddCPUValue inserts new CPU measurements into data.
2017-12-16 11:54:21 +00:00
func (d *Data) AddCPUValue(value float64) {
d.cpu.Add(value)
}
2018-01-18 10:37:18 +00:00
// AddMemoryStats inserts new memory measurements into data.
func (d *Data) AddMemoryStats(used uint64) {
d.mem.Add(float64(used))
}
2018-01-10 21:27:57 +00:00
// AddNetworkStats inserts new network stats into data.
2018-01-10 22:02:47 +00:00
func (d *Data) AddNetworkStats(rx, tx int64) {
d.rxBytes.Add(float64(rx))
d.txBytes.Add(float64(tx))
2018-01-10 21:27:57 +00:00
}
2017-12-16 12:00:33 +00:00
// CPU returns CPU values.
func (d *Data) CPU() []float64 {
2017-12-16 11:54:21 +00:00
return d.cpu.Data()
}
2018-01-10 21:27:57 +00:00
2018-01-18 10:37:18 +00:00
// MemoryStats returns memory usage stat values.
func (d *Data) MemoryStats() (used []float64) {
return d.mem.Data()
}
// NetworkStats returns network stat values.
2018-01-10 21:27:57 +00:00
func (d *Data) NetworkStats() (rx, tx []float64) {
return d.rxBytes.Data(), d.txBytes.Data()
}
// Clear clears all data.
func (d *Data) Clear() {
for _, b := range [...]*CircularBuffer{d.cpu, d.mem, d.rxBytes, d.txBytes} {
b.Reset()
}
}