func (c *MemStore) ControllerByAPIEndpoints(endpoints ...string) (*ControllerDetails, string, error) {
	c.mu.Lock()
	defer c.mu.Unlock()

	matchEps := set.NewStrings(endpoints...)
	for name, ctrl := range c.Controllers {
		if matchEps.Intersection(set.NewStrings(ctrl.APIEndpoints...)).IsEmpty() {
			continue
		}

		return &ctrl, name, nil
	}
	return nil, "", errors.NotFoundf("controller with API endpoints %v", endpoints)
}
// ControllerByAPIEndpoints implements ControllersGetter.ControllerByAPIEndpoints
ControllerByAPIEndpoints implements ControllersGetter.ControllerByAPIEndpoints
// ControllerByAPIEndpoints implements ControllersGetter . ControllerByAPIEndpoints
func (c *MemStore) ControllerByAPIEndpoints(endpoints ...string) (*ControllerDetails, string, error) {
	c.mu.Lock()
	defer c.mu.Unlock()
	matchEps := set.NewStrings(endpoints...)
	for name, ctrl := range c.Controllers {
		if matchEps.Intersection(set.NewStrings(ctrl.APIEndpoints...)).IsEmpty() {
			continue
		}
		return &ctrl, name, nil
	}
	return nil, "", errors.NotFoundf("controller with API endpoints %v", endpoints)
}
func ( c * MemStore ) ControllerByAPIEndpoints ( endpoints ... string ) ( * ControllerDetails , string , error ) { c . mu . Lock ( ) defer c . mu . Unlock ( ) matchEps := set . NewStrings ( endpoints ... ) for name , ctrl := range c . Controllers { if matchEps . Intersection ( set . NewStrings ( ctrl . APIEndpoints ... ) ) . IsEmpty ( ) { continue } return & ctrl , name , nil } return nil , " " , errors . NotFoundf ( " " , endpoints ) }
ControllerByAPIEndpoints implements ControllersGetter.ControllerByAPIEndpoints
ControllerByAPIEndpoints implements ControllersGetter . ControllerByAPIEndpoints