2023-03-29 20:12:32 +00:00
|
|
|
package features
|
|
|
|
|
|
|
|
const (
|
|
|
|
FeatureSerializedHeaders = "serialized_headers"
|
|
|
|
FeatureQuickReconnects = "quick_reconnects"
|
|
|
|
FeatureAllowRemoteConfig = "allow_remote_config"
|
|
|
|
FeatureDatagramV2 = "support_datagram_v2"
|
|
|
|
FeaturePostQuantum = "postquantum"
|
|
|
|
FeatureQUICSupportEOF = "support_quic_eof"
|
|
|
|
FeatureManagementLogs = "management_logs"
|
2024-10-01 22:21:01 +00:00
|
|
|
FeatureDatagramV3 = "support_datagram_v3"
|
2023-03-29 20:12:32 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
DefaultFeatures = []string{
|
|
|
|
FeatureAllowRemoteConfig,
|
|
|
|
FeatureSerializedHeaders,
|
|
|
|
FeatureDatagramV2,
|
|
|
|
FeatureQUICSupportEOF,
|
2023-04-12 21:41:11 +00:00
|
|
|
FeatureManagementLogs,
|
2023-03-29 20:12:32 +00:00
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
func Contains(feature string) bool {
|
|
|
|
for _, f := range DefaultFeatures {
|
|
|
|
if f == feature {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
2023-08-25 13:39:25 +00:00
|
|
|
|
|
|
|
// Remove any duplicates from the slice
|
|
|
|
func Dedup(slice []string) []string {
|
|
|
|
|
|
|
|
// Convert the slice into a set
|
|
|
|
set := make(map[string]bool, 0)
|
|
|
|
for _, str := range slice {
|
|
|
|
set[str] = true
|
|
|
|
}
|
|
|
|
|
|
|
|
// Convert the set back into a slice
|
|
|
|
keys := make([]string, len(set))
|
|
|
|
i := 0
|
|
|
|
for str := range set {
|
|
|
|
keys[i] = str
|
|
|
|
i++
|
|
|
|
}
|
|
|
|
return keys
|
|
|
|
}
|