MCPcopy Index your code
hub / github.com/cloudflare/cloudflared / newFeatureSelector

Function newFeatureSelector

features/selector.go:56–84  ·  view source on GitHub ↗
(ctx context.Context, accountTag string, logger *zerolog.Logger, resolver resolver, cliFeatures []string, pq bool, refreshFreq time.Duration)

Source from the content-addressed store, hash-verified

54}
55
56func newFeatureSelector(ctx context.Context, accountTag string, logger *zerolog.Logger, resolver resolver, cliFeatures []string, pq bool, refreshFreq time.Duration) (*featureSelector, error) {
57 // Combine default features and user-provided features
58 var pqMode *PostQuantumMode
59 if pq {
60 mode := PostQuantumStrict
61 pqMode = &mode
62 cliFeatures = append(cliFeatures, FeaturePostQuantum)
63 }
64 staticFeatures := staticFeatures{
65 PostQuantumMode: pqMode,
66 }
67 selector := &featureSelector{
68 accountHash: switchThreshold(accountTag),
69 logger: logger,
70 resolver: resolver,
71 staticFeatures: staticFeatures,
72 cliFeatures: dedupAndRemoveFeatures(cliFeatures),
73 }
74
75 // Load the remote features
76 if err := selector.refresh(ctx); err != nil {
77 logger.Err(err).Msg("Failed to fetch features, default to disable")
78 }
79
80 // Spin off reloading routine
81 go selector.refreshLoop(ctx, refreshFreq)
82
83 return selector, nil
84}
85
86func (fs *featureSelector) Snapshot() FeatureSnapshot {
87 fs.lock.RLock()

Calls 5

refreshMethod · 0.95
refreshLoopMethod · 0.95
dedupAndRemoveFeaturesFunction · 0.85
switchThresholdFunction · 0.70
ErrMethod · 0.45