コード例 #1
0
 /// <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));
 }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
 /// <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));
 }