コード例 #1
0
        /// <summary>
        /// 全局求和
        /// </summary>
        /// <typeparam name="T">返回值类型</typeparam>
        /// <param name="val">本地和</param>
        /// <returns>全局和</returns>
        public static T Sum <T>(double val)
        {
            Init();
            MergePacket packet = new MergePacket(Serializer.SerializeToBytes(val), MergePacket.MergeType.Sum, Application.Parameters[4].ToString(), Application.Parameters[5].ToString())
            {
                WaiteCallBack = true
            };

            Logger.Info(Application.Parameters[2] + "," + Application.Parameters[3] + " send sum commond,value is " + val);
            return((T)Convert.ChangeType(_client.Send <object>(packet), typeof(T)));
        }
コード例 #2
0
        /// <summary>
        /// 合并哈希表
        /// </summary>
        /// <param name="table">哈希表(本地)</param>
        /// <returns>哈希表(全局)</returns>
        public static Hashtable CombineTable(Hashtable table)
        {
            Init();
            MergePacket packet = new MergePacket(Serializer.SerializeToBytes(table), MergePacket.MergeType.CombineTable,
                                                 Application.Parameters[4].ToString(), Application.Parameters[5].ToString())
            {
                WaiteCallBack = true
            };

            Logger.Info(Application.Parameters[2] + "," + Application.Parameters[3] + " send combine table commond.");
            return(_client.Send <Hashtable>(packet));
        }
コード例 #3
0
        /// <summary>
        /// 合并列表
        /// </summary>
        /// <typeparam name="T">列表元素类型</typeparam>
        /// <param name="objects">列表集合(本地)</param>
        /// <returns>列表集合(全局)</returns>
        public static List <T> CombineList <T>(List <T> objects)
        {
            Init();
            MergePacket packet = new MergePacket(Serializer.SerializeToBytes(objects), MergePacket.MergeType.CombineList,
                                                 Application.Parameters[4].ToString(), Application.Parameters[5].ToString())
            {
                WaiteCallBack = true
            };

            Logger.Info(Application.Parameters[2] + "," + Application.Parameters[3] + " send combine list commond.");
            return(_client.Send <List <T> >(packet));
        }
コード例 #4
0
        /// <summary>
        /// 全局求平均
        /// </summary>
        /// <param name="val">本地均值</param>
        /// <returns>全局均值</returns>
        public static double Average(double val)
        {
            Init();
            MergePacket packet = new MergePacket(Serializer.SerializeToBytes(val), MergePacket.MergeType.Average,
                                                 Application.Parameters[4].ToString(), Application.Parameters[5].ToString())
            {
                WaiteCallBack = true
            };

            Logger.Info(Application.Parameters[2] + "," + Application.Parameters[3] + " send average commond,value is " + val);
            return(_client.Send <double>(packet));
        }
コード例 #5
0
        /// <summary>
        /// 列表去重
        /// </summary>
        /// <typeparam name="T">列表元素类型</typeparam>
        /// <param name="objects">列表(本地)</param>
        /// <returns>列表(全局)</returns>
        public static List <T> Distinct <T>(List <T> objects)
        {
            Init();
            objects = (List <T>)objects.Distinct();
            MergePacket packet = new MergePacket(Serializer.SerializeToBytes(objects), MergePacket.MergeType.Distinct,
                                                 Application.Parameters[4].ToString(), Application.Parameters[5].ToString())
            {
                WaiteCallBack = true
            };

            Logger.Info(Application.Parameters[2] + "," + Application.Parameters[3] + " send distinct commond. ");
            List <object> results = _client.Send <List <object> >(packet);

            return(results.Select(result => (T)result).ToList());
        }
コード例 #6
0
        /// <summary>
        /// 归并排序
        /// </summary>
        /// <typeparam name="T">排序数据类型(目前只支持int和double)</typeparam>
        /// <param name="objects">排序列表(本地)</param>
        /// <returns>排序列表(全局)</returns>
        public static T[] CombineSort <T>(T[] objects) where T : IComparable
        {
            Init();
            Logger.Info("Start local sort.");
            QuickSort <T> quickSort = new QuickSort <T>();

            objects = quickSort.GetResult(objects);
            Logger.Info("Local sort has finied,now send to Merger to combine.");
            MergePacket packet = new MergePacket(Serializer.SerializeToBytes(objects), MergePacket.MergeType.CombineSort,
                                                 Application.Parameters[4].ToString(), Application.Parameters[5].ToString())
            {
                WaiteCallBack = true
            };

            Logger.Info(Application.Parameters[2] + "," + Application.Parameters[3] + " send combine sort commond.");
            object[] results = _client.Send <object[]>(packet);
            return(Array.ConvertAll(results, n => (T)Convert.ChangeType(n, typeof(T))));
        }