/// <summary> /// 调用 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="endPointInfos"></param> /// <param name="invokeHandler"></param> /// <param name="getEndPointsHandler"></param> /// <param name="paramters"></param> /// <returns></returns> public object Invoke <T>(IList <EndPointInfo> endPointInfos, InvokeDelegate <T> invokeHandler, GetEndPointsDelegate getEndPointsHandler, params object[] paramters) { return(Invoke(endPointInfos, invokeHandler, getEndPointsHandler, false, paramters)); }
/// <summary> /// 调用 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="endPointInfos"></param> /// <param name="invokeHandler"></param> /// <param name="getEndPointsHandler"></param> /// <param name="isSendPoint"></param> /// <param name="paramters"></param> /// <returns></returns> public object Invoke <T>(IList <EndPointInfo> endPointInfos, InvokeDelegate <T> invokeHandler, GetEndPointsDelegate getEndPointsHandler, bool isSendPoint, params object[] paramters) { var points = getEndPointsHandler != null?getEndPointsHandler(endPointInfos, paramters) : endPointInfos.Where(it => it.IsException == false).ToList(); if (points == null || points.Count == 0) { return(null); } EndPointInfo endPoint = points.GetBestEndPoint(); var endPoints = endPoint.GetAllEndPoints(); for (int i = 0; i < endPoints.Count; i++) { try { return(ExecuteInovke(endPoints[i], invokeHandler, isSendPoint, paramters)); } catch (Exception ex) { Log.AddException(ex); endPoints[i].IsException = true; Action <EndPointInfo> action = CheckConnectionAlive <T>; action.BeginInvoke(endPoint, null, null); } } return(null); }
/// <summary> /// 调用 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="invokeHandler"></param> /// <param name="getEndPointsHandler"></param> /// <param name="paramters"></param> /// <returns></returns> public object Invoke <T>(InvokeDelegate <T> invokeHandler, GetEndPointsDelegate getEndPointsHandler, params object[] paramters) { return(Invoke(EndPoints, invokeHandler, getEndPointsHandler, paramters)); }