aboutsummaryrefslogtreecommitdiffstats
path: root/adapter/stats_api.go
diff options
context:
space:
mode:
authorOndrej Fabry <ofabry@cisco.com>2018-10-22 14:45:21 +0200
committerOndrej Fabry <ofabry@cisco.com>2018-10-22 14:56:09 +0200
commit28df7c855784e784fb0e614c1cca0e565a7ef75f (patch)
tree7d2eb1b3522d57680df8a6f576356f9dd4dc706c /adapter/stats_api.go
parent62d19032621c7db801b313a1e19e787cfb1fbc3e (diff)
Introduce StatsAPI and it's initial implementation
- this implementation is basically Go wrapper around VPP's vppapiclient C library Change-Id: I6f53dc3e228868834bf3a8a00c686ad05e22f3dd Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
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() {}