Fix compatibility with latest master (20.01-rc0)
[govpp.git] / adapter / stats_api.go
index 8815aae..90ecd78 100644 (file)
@@ -1,5 +1,34 @@
+// Copyright (c) 2019 Cisco and/or its affiliates.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at:
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 package adapter
 
+import (
+       "errors"
+       "fmt"
+)
+
+const (
+       // DefaultStatsSocket defines a default socket file path for VPP stats API.
+       DefaultStatsSocket = "/run/vpp/stats.sock"
+)
+
+var (
+       ErrStatDirBusy  = errors.New("stat dir busy")
+       ErrStatDumpBusy = errors.New("stat dump busy")
+)
+
 // StatsAPI provides connection to VPP stats API.
 type StatsAPI interface {
        // Connect establishes client connection to the stats API.
@@ -20,11 +49,12 @@ type StatsAPI interface {
 type StatType int
 
 const (
-       _ StatType = iota
-       ScalarIndex
-       SimpleCounterVector
-       CombinedCounterVector
-       ErrorIndex
+       _                     StatType = 0
+       ScalarIndex           StatType = 1
+       SimpleCounterVector   StatType = 2
+       CombinedCounterVector StatType = 3
+       ErrorIndex            StatType = 4
+       NameVector            StatType = 5
 )
 
 func (d StatType) String() string {
@@ -37,8 +67,10 @@ func (d StatType) String() string {
                return "CombinedCounterVector"
        case ErrorIndex:
                return "ErrorIndex"
+       case NameVector:
+               return "NameVector"
        }
-       return "UnknownStatType"
+       return fmt.Sprintf("UnknownStatType(%d)", d)
 }
 
 // StatEntry represents single stat entry. The type of stat stored in Data
@@ -58,22 +90,28 @@ type CombinedCounter struct {
        Bytes   Counter
 }
 
+// Name represents string value stored under name vector.
+type Name string
+
 // ScalarStat represents stat for ScalarIndex.
 type ScalarStat float64
 
 // ErrorStat represents stat for ErrorIndex.
-type ErrorStat uint64
+type ErrorStat Counter
 
 // 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.
+// The outer array represents workers and the inner array represents interface/node/.. indexes.
+// Values should be aggregated per interface/node 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.
+// The outer array represents workers and the inner array represents interface/node/.. indexes.
+// Values should be aggregated per interface/node for every worker.
 type CombinedCounterStat [][]CombinedCounter
 
+// NameStat represents stat for NameVector.
+type NameStat []Name
+
 // 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,
@@ -84,3 +122,4 @@ func (ScalarStat) isStat()          {}
 func (ErrorStat) isStat()           {}
 func (SimpleCounterStat) isStat()   {}
 func (CombinedCounterStat) isStat() {}
+func (NameStat) isStat()            {}