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.
|
2018-01-29 16:41:54 +00:00
|
|
|
func NewData(historyLimit int) *Data {
|
2017-12-16 11:54:21 +00:00
|
|
|
return &Data{
|
2018-01-29 16:41:54 +00:00
|
|
|
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()
|
|
|
|
}
|
2018-01-29 15:41:21 +00:00
|
|
|
|
|
|
|
// Clear clears all data.
|
|
|
|
func (d *Data) Clear() {
|
|
|
|
for _, b := range [...]*CircularBuffer{d.cpu, d.mem, d.rxBytes, d.txBytes} {
|
|
|
|
b.Reset()
|
|
|
|
}
|
|
|
|
}
|