package collector import "sync" type Registry struct { mu sync.RWMutex connectors map[string]Connector } func NewRegistry() *Registry { return &Registry{ connectors: make(map[string]Connector), } } func NewDefaultRegistry() *Registry { r := NewRegistry() r.Register(NewRedfishConnector()) r.Register(NewIPMIMockConnector()) return r } func (r *Registry) Register(connector Connector) { if connector == nil { return } r.mu.Lock() r.connectors[connector.Protocol()] = connector r.mu.Unlock() } func (r *Registry) Get(protocol string) (Connector, bool) { r.mu.RLock() connector, ok := r.connectors[protocol] r.mu.RUnlock() return connector, ok }