MCPcopy
hub / github.com/netbirdio/netbird / Resolve

Method Resolve

proxy/internal/middleware/registry.go:102–121  ·  view source on GitHub ↗

Resolve builds a Middleware instance and merges runtime-only fields (version, accepted content types, metadata key allowlist, mutation support) onto the spec. Return semantics: - (mw, mergedSpec, nil): instance built, include in chain. - (nil, spec, nil): id not registered; silently skip. - (nil, s

(spec Spec)

Source from the content-addressed store, hash-verified

100// - (nil, spec, err): factory rejected the config (logged + counted
101// by Manager, other middlewares still bind).
102func (r *Resolver) Resolve(spec Spec) (Middleware, Spec, error) {
103 f := r.registry.Get(spec.ID)
104 if f == nil {
105 return nil, spec, nil
106 }
107 mw, err := f.New(spec.RawConfig)
108 if err != nil {
109 return nil, spec, fmt.Errorf("middleware %s factory: %w", spec.ID, err)
110 }
111 if mw.Slot() != spec.Slot {
112 _ = mw.Close()
113 return nil, spec, fmt.Errorf("middleware %s slot mismatch: spec=%d impl=%d", spec.ID, spec.Slot, mw.Slot())
114 }
115 merged := spec
116 merged.Version = mw.Version()
117 merged.MetadataKeys = append([]string(nil), mw.MetadataKeys()...)
118 merged.AcceptedContentTypes = append([]string(nil), mw.AcceptedContentTypes()...)
119 merged.MutationsSupported = mw.MutationsSupported()
120 return mw, merged, nil
121}

Callers 1

buildChainMethod · 0.80

Calls 9

ErrorfMethod · 0.80
GetMethod · 0.65
NewMethod · 0.65
SlotMethod · 0.65
CloseMethod · 0.65
VersionMethod · 0.65
MetadataKeysMethod · 0.65
AcceptedContentTypesMethod · 0.65
MutationsSupportedMethod · 0.65

Tested by

no test coverage detected