go/protocol/internal/version/version.go (56 lines of code) (raw):
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
package version
import (
"slices"
"strconv"
"strings"
)
const (
RPC = "1.0"
Telemetry = "1.0"
)
var (
RPCSupported = []int{1}
TelemetrySupported = []int{1}
)
func Parse(v string) (major, minor int) {
if v == "" {
return 1, 0
}
parts := strings.Split(v, ".")
if len(parts) != 2 {
return -1, 0
}
var err error
major, err = strconv.Atoi(parts[0])
if err != nil {
return -1, 0
}
minor, err = strconv.Atoi(parts[1])
if err != nil {
return -1, 0
}
return major, minor
}
func ParseSupported(vs string) []int {
parts := strings.Split(vs, " ")
res := make([]int, len(parts))
for i, part := range parts {
var err error
res[i], err = strconv.Atoi(part)
if err != nil {
return nil
}
}
return res
}
func SerializeSupported(vs []int) string {
res := make([]string, len(vs))
for i, n := range vs {
res[i] = strconv.Itoa(n)
}
return strings.Join(res, " ")
}
func IsSupported(v string, supported []int) bool {
major, _ := Parse(v)
return slices.Contains(supported, major)
}