1 // Copyright (c) 2019 Cisco and/or its affiliates.
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at:
7 // http://www.apache.org/licenses/LICENSE-2.0
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
21 // StatsAPI provides connection to VPP stats API.
22 type StatsAPI interface {
23 // Connect establishes client connection to the stats API.
26 // Disconnect terminates client connection.
29 // ListStats lists names for all stats.
30 ListStats(patterns ...string) (statNames []string, err error)
32 // DumpStats dumps all stat entries.
33 DumpStats(patterns ...string) ([]*StatEntry, error)
36 // StatType represents type of stat directory and simply
37 // defines what type of stat data is stored in the stat entry.
43 SimpleCounterVector = 2
44 CombinedCounterVector = 3
48 func (d StatType) String() string {
52 case SimpleCounterVector:
53 return "SimpleCounterVector"
54 case CombinedCounterVector:
55 return "CombinedCounterVector"
59 return fmt.Sprintf("UnknownStatType(%d)", d)
62 // StatEntry represents single stat entry. The type of stat stored in Data
63 // is defined by Type.
64 type StatEntry struct {
70 // Counter represents simple counter with single value.
73 // CombinedCounter represents counter with two values, for packet count and bytes count.
74 type CombinedCounter struct {
79 // ScalarStat represents stat for ScalarIndex.
80 type ScalarStat float64
82 // ErrorStat represents stat for ErrorIndex.
85 // SimpleCounterStat represents stat for SimpleCounterVector.
86 // The outer array represents workers and the inner array represents interface/node/.. indexes.
87 // Values should be aggregated per interface/node for every worker.
88 type SimpleCounterStat [][]Counter
90 // CombinedCounterStat represents stat for CombinedCounterVector.
91 // The outer array represents workers and the inner array represents interface/node/.. indexes.
92 // Values should be aggregated per interface/node for every worker.
93 type CombinedCounterStat [][]CombinedCounter
95 // Data represents some type of stat which is usually defined by StatType.
97 // isStat is unexported to limit implementations of Data interface to this package,
101 func (ScalarStat) isStat() {}
102 func (ErrorStat) isStat() {}
103 func (SimpleCounterStat) isStat() {}
104 func (CombinedCounterStat) isStat() {}