Example #1
0
        /// <summary>
        ///     初始化 契约缓存
        /// </summary>
        public void InitContractCache()
        {
            var           cType          = typeof(TMsmqHandlerContract);
            ParameterInfo tParameterInfo = null;
            var           methods        = cType.GetMethods(BindingFlags.Public | BindingFlags.Instance)
                                           .Where(x => x.MemberType == MemberTypes.Method && //实例方法
                                                  x.ReturnType == typeof(void) && //方法无返回值
                                                  x.GetParameters().Length == 1 && //一个参数
                                                  (tParameterInfo = x.GetParameters()[0])
                                                  .ParameterType.IsSubclassOf(typeof(MessageBase))) //参数继承自 MessageBase
                                           .ToDictionary(x => x.Name, y => y);

            m_MsmqContract_Cache.AddRange(methods);

            MsmqHandlerFactory = MsmqBindUtils.GetNewFactory <TMsmqHandlerImpl>();
        }
Example #2
0
        private void CleanHistory()
        {
            var remained = new ConcurrentDictionary <string, Arbitrage>();

            // Get distinct paths and for each path remain only %_historyMaxSize% of the best
            var uniqueAssetPairs = _arbitrageHistory.Values.Select(x => x.AssetPair).Distinct().ToList();

            foreach (var assetPair in uniqueAssetPairs)
            {
                _arbitrageHistory.Where(x => x.Value.AssetPair.Equals(assetPair))
                .OrderByDescending(x => x.Value.PnL)
                .Take(Settings().HistoryMaxSize)
                .ForEach(x => remained[x.Key] = x.Value);
            }

            _arbitrageHistory.Clear();
            _arbitrageHistory.AddRange(remained);
        }
Example #3
0
        public DataObjectConverter(ILogger logger, IEnumerable <KeyValuePair <string, Type> > knownDataTypes = null)
        {
            _logger = logger;

            if (knownDataTypes != null)
            {
                _dataTypeRegistry.AddRange(knownDataTypes);
            }

            if (_propertyAccessors.Count != 0)
            {
                return;
            }

            foreach (var prop in _type.GetProperties(BindingFlags.Instance | BindingFlags.FlattenHierarchy | BindingFlags.Public).Where(p => p.CanWrite))
            {
                _propertyAccessors.TryAdd(prop.Name, LateBinder.GetPropertyAccessor(prop));
            }
        }
 public DeltaModel(IEnumerable <ShiftModel> created, IEnumerable <ShiftModel> updated, IEnumerable <ShiftModel> deleted)
 {
     _created.AddRange(created, k => k as ShiftModel);
     _updated.AddRange(updated, k => k as ShiftModel);
     _deleted.AddRange(deleted, k => k as ShiftModel);
 }