public LoadBalancerRoute GetLoadBalancerRoute(LoadBalancerRequestConfig requestConfig) { if (requestConfig == null || requestConfig.RouteChains.IsNullOrEmpty()) { return(null); } var routeMap = _routeMap; for (int i = 0; i < requestConfig.RouteChains.Length; i++) { LoadBalancerRouteConfig routeConfig = requestConfig.RouteChains[i]; if (!string.IsNullOrWhiteSpace(routeConfig.RouteId)) { LoadBalancerRoute route; if (routeMap.TryGetValue(routeConfig.RouteId, out route)) { var e = new SeekRouteEventArgs(route); RaiseSeekRouteEvent(e); return(e.Route); } } if (!routeConfig.AllowFallback) { return(null); } } return(null); }
private void RaiseSeekRouteEvent(SeekRouteEventArgs e) { if (OnSeekRoute == null) { return; } try { OnSeekRoute(this, e); } catch (Exception ex) { _logger.Warn("Error occurred while raising SeekRouteEvent.", ex, _loadBalancerContext.AdditionalInfo); } }