internal/kernel/process/handshake.go (21 lines of code) (raw):
package process
import (
"fmt"
"regexp"
"github.com/Masterminds/semver/v3"
)
type handshakeResponse struct {
Hello string `json:"hello"`
}
func (h *handshakeResponse) runtimeVersion() (*semver.Version, error) {
re := regexp.MustCompile("@")
parts := re.Split(h.Hello, 3)
switch len(parts) {
case 2:
return semver.NewVersion(parts[1])
case 3:
return semver.NewVersion(parts[2])
default:
return nil, fmt.Errorf("invalid handshake payload: %v", h.Hello)
}
}