package gateway import ( "errors" protocol "git.sechmachine.io.vn/sechmachine/VerseVDI-Protocol/gen/go/protocol" ) var ErrNoCapabilityOverlap = errors.New("no capability overlap") func DefaultCapabilities() protocol.CapabilityProfile { return protocol.CapabilityProfile{ Transport: "quic-tls13", Framing: "datagram-v1", Media: "encoded", Audio: "encoded", SourceRateControl: "server", ClientDecode: "h264-opus", } } func IntersectCapabilities(profiles ...protocol.CapabilityProfile) (protocol.CapabilityProfile, error) { if len(profiles) == 0 { return protocol.CapabilityProfile{}, ErrNoCapabilityOverlap } for _, profile := range profiles { if err := profile.Validate(); err != nil { return protocol.CapabilityProfile{}, ErrNoCapabilityOverlap } } selected := profiles[0] for _, profile := range profiles[1:] { if selected.Transport != profile.Transport || selected.Framing != profile.Framing || selected.Media != profile.Media || selected.Audio != profile.Audio || selected.SourceRateControl != profile.SourceRateControl || selected.ClientDecode != profile.ClientDecode { return protocol.CapabilityProfile{}, ErrNoCapabilityOverlap } } return selected, nil }