aboutsummaryrefslogtreecommitdiffstats
path: root/adapter/stats_api.go
diff options
context:
space:
mode:
Diffstat (limited to 'adapter/stats_api.go')
-rw-r--r--adapter/stats_api.go86
1 files changed, 86 insertions, 0 deletions
diff --git a/adapter/stats_api.go b/adapter/stats_api.go
new file mode 100644
index 0000000..8815aae
--- /dev/null
+++ b/adapter/stats_api.go
@@ -0,0 +1,86 @@
+package adapter
+
+// StatsAPI provides connection to VPP stats API.
+type StatsAPI interface {
+ // Connect establishes client connection to the stats API.
+ Connect() error
+
+ // Disconnect terminates client connection.
+ Disconnect() error
+
+ // ListStats lists names for all stats.
+ ListStats(patterns ...string) (statNames []string, err error)
+
+ // DumpStats dumps all stat entries.
+ DumpStats(patterns ...string) ([]*StatEntry, error)
+}
+
+// StatType represents type of stat directory and simply
+// defines what type of stat data is stored in the stat entry.
+type StatType int
+
+const (
+ _ StatType = iota
+ ScalarIndex
+ SimpleCounterVector
+ CombinedCounterVector
+ ErrorIndex
+)
+
+func (d StatType) String() string {
+ switch d {
+ case ScalarIndex:
+ return "ScalarIndex"
+ case SimpleCounterVector:
+ return "SimpleCounterVector"
+ case CombinedCounterVector:
+ return "CombinedCounterVector"
+ case ErrorIndex:
+ return "ErrorIndex"
+ }
+ return "UnknownStatType"
+}
+
+// StatEntry represents single stat entry. The type of stat stored in Data
+// is defined by Type.
+type StatEntry struct {
+ Name string
+ Type StatType
+ Data Stat
+}
+
+// Counter represents simple counter with single value.
+type Counter uint64
+
+// CombinedCounter represents counter with two values, for packet count and bytes count.
+type CombinedCounter struct {
+ Packets Counter
+ Bytes Counter
+}
+
+// ScalarStat represents stat for ScalarIndex.
+type ScalarStat float64
+
+// ErrorStat represents stat for ErrorIndex.
+type ErrorStat uint64
+
+// SimpleCounterStat represents stat for SimpleCounterVector.
+// The outer array represents workers and the inner array represents sw_if_index.
+// Values should be aggregated per interface for every worker.
+type SimpleCounterStat [][]Counter
+
+// CombinedCounterStat represents stat for CombinedCounterVector.
+// The outer array represents workers and the inner array represents sw_if_index.
+// Values should be aggregated per interface for every worker.
+type CombinedCounterStat [][]CombinedCounter
+
+// Data represents some type of stat which is usually defined by StatType.
+type Stat interface {
+ // isStat is unexported to limit implementations of Data interface to this package,
+ isStat()
+}
+
+func (ScalarStat) isStat() {}
+func (ErrorStat) isStat() {}
+func (SimpleCounterStat) isStat() {}
+func (CombinedCounterStat) isStat() {}