func (r *RouteRegistry) Register(uri route.Uri, endpoint *route.Endpoint) { t := time.Now() data := lager.Data{"uri": uri, "backend": endpoint.CanonicalAddr(), "modification_tag": endpoint.ModificationTag} r.reporter.CaptureRegistryMessage(endpoint) r.Lock() uri = uri.RouteKey() pool, found := r.byUri.Find(uri) if !found { contextPath := parseContextPath(uri) pool = route.NewPool(r.dropletStaleThreshold/4, contextPath) r.byUri.Insert(uri, pool) r.logger.Debug("uri-added", lager.Data{"uri": uri}) } endpointAdded := pool.Put(endpoint) r.timeOfLastUpdate = t r.Unlock() if endpointAdded { r.logger.Debug("endpoint-registered", data) } else { r.logger.Debug("endpoint-not-registered", data) } }
func (r *RouteRegistry) Lookup(uri route.Uri) *route.Pool { r.RLock() uri = uri.RouteKey() var err error pool, found := r.byUri.MatchUri(uri) for !found && err == nil { uri, err = uri.NextWildcard() pool, found = r.byUri.MatchUri(uri) } r.RUnlock() return pool }
func (r *RouteRegistry) Unregister(uri route.Uri, endpoint *route.Endpoint) { r.Lock() uri = uri.RouteKey() pool, found := r.byUri.Find(uri) if found { pool.Remove(endpoint) if pool.IsEmpty() { r.byUri.Delete(uri) } } r.Unlock() }
func (r *RouteRegistry) Register(uri route.Uri, endpoint *route.Endpoint) { t := time.Now() r.Lock() uri = uri.RouteKey() pool, found := r.byUri.Find(uri) if !found { contextPath := parseContextPath(uri) pool = route.NewPool(r.dropletStaleThreshold/4, contextPath) r.byUri.Insert(uri, pool) } pool.Put(endpoint) r.timeOfLastUpdate = t r.Unlock() }
func (r *RouteRegistry) Unregister(uri route.Uri, endpoint *route.Endpoint) { r.reporter.CaptureRegistryMessage(endpoint) r.Lock() uri = uri.RouteKey() pool, found := r.byUri.Find(uri) if found { pool.Remove(endpoint) if pool.IsEmpty() { r.byUri.Delete(uri) } r.logger.Debug("unregister", lager.Data{"uri": uri}) } r.Unlock() }
func (r *RouteRegistry) Register(uri route.Uri, endpoint *route.Endpoint) { t := time.Now() r.reporter.CaptureRegistryMessage(endpoint) r.Lock() uri = uri.RouteKey() pool, found := r.byUri.Find(uri) if !found { contextPath := parseContextPath(uri) pool = route.NewPool(r.dropletStaleThreshold/4, contextPath) r.byUri.Insert(uri, pool) r.logger.Debug("register", lager.Data{"uri": uri}) } pool.Put(endpoint) r.timeOfLastUpdate = t r.Unlock() }
func (r *RouteRegistry) Unregister(uri route.Uri, endpoint *route.Endpoint) { data := lager.Data{"uri": uri, "backend": endpoint.CanonicalAddr(), "modification_tag": endpoint.ModificationTag} r.reporter.CaptureRegistryMessage(endpoint) r.Lock() uri = uri.RouteKey() pool, found := r.byUri.Find(uri) if found { endpointRemoved := pool.Remove(endpoint) if endpointRemoved { r.logger.Debug("endpoint-unregistered", data) } else { r.logger.Debug("endpoint-not-unregistered", data) } if pool.IsEmpty() { r.byUri.Delete(uri) } } r.Unlock() }