public void RouteSetting(RoutesModel body)
        {
            RouteServersModel[] array = ((IEnumerable <RouteServersModel>) this.ListRouteServers(body.Url)).ToArray <RouteServersModel>();
            for (int i = 0; i < array.Length; i++)
            {
                RouteServersModel s = array[i];
                if (body.Servers == null || body.Servers.FirstOrDefault((RouteServersModel p) => p.Host == s.Host) == null)
                {
                    this.RemoveRouteServer(body.Url, s.Host);
                }
            }
            var res = this.gateway.SetRoute(body.Url, body.Remark, body.HashPattern);

            res.TimeOut = body.TimeOut;
            if (body.Servers != null)
            {
                foreach (RouteServersModel gatewayRouteServerDTO in body.Servers)
                {
                    Bumblebee.Routes.UrlRoute route = this.gateway.Routes.GetRoute(body.Url);
                    if (route != null)
                    {
                        route.AddServer(gatewayRouteServerDTO.Host, gatewayRouteServerDTO.Weight, gatewayRouteServerDTO.MaxRps, gatewayRouteServerDTO.Standby);
                    }
                }
            }
            this.gateway.SaveConfig();
        }
 public void RemoveRouteServer(string url, string server)
 {
     Bumblebee.Routes.UrlRoute route = this.gateway.Routes.GetRoute(url);
     if (route != null)
     {
         route.RemoveServer(server);
     }
     this.gateway.SaveConfig();
     this.gateway.Routes.UpdateUrlTable();
 }
 public void SetRouteServer(string url, string server, int weight, int maxRps, bool standby = false)
 {
     new Uri(server);
     Bumblebee.Routes.UrlRoute route = this.gateway.Routes.GetRoute(url);
     if (route != null)
     {
         route.AddServer(server, weight, maxRps, standby);
     }
     this.gateway.SaveConfig();
     this.gateway.Routes.UpdateUrlTable();
 }
 /// <summary>
 /// 某个路由下的服务
 /// </summary>
 /// <param name="url"></param>
 /// <returns></returns>
 public object ListRouteServers(string url)
 {
     Bumblebee.Routes.UrlRoute route = this.gateway.Routes.GetRoute(url);
     return(from a in route?.Servers
            select new RouteServersModel
     {
         Host = a.Agent.Uri.ToString(),
         Weight = a.Weight,
         Available = a.Agent.Available,
         MaxRps = a.MaxRPS,
         Standby = a.Standby
     });
 }