示例#1
0
        public CsvMarketDataSerializer(SecurityId securityId, ExecutionTypes?executionType, Encoding encoding = null)
        {
            if (securityId.IsDefault() && typeof(TData) != typeof(NewsMessage))
            {
                throw new ArgumentNullException("securityId");
            }

            SecurityId     = securityId;
            _executionType = executionType;
            _encoding      = encoding ?? Encoding.UTF8;

            if (typeof(TData) == typeof(QuoteChangeMessage))
            {
                return;
            }

            _format = GetFormat(executionType).Put(_timeFormat);

            var timeFormat = ":" + _timeFormat;

            if (_isLevel1)
            {
                return;
            }

            _members = _info.SafeAdd(Tuple.Create(typeof(TData), executionType), key =>
                                     _format
                                     .Split(';')
                                     .Select(s =>
                                             MemberProxy.Create(typeof(TData),
                                                                s.Substring(1, s.Length - 2).Replace(timeFormat, string.Empty)))
                                     .ToArray());
        }
示例#2
0
            private void Load()
            {
                if (!File.Exists(_file))
                {
                    return;
                }

                var proxySet = _format
                               .Split(';')
                               .Select(s => MemberProxy.Create(typeof(Security), s.Substring(1, s.Length - 2)))
                               .ToArray();

                CultureInfo.InvariantCulture.DoInCulture(() =>
                {
                    foreach (var line in File.ReadAllLines(_file))
                    {
                        var security = new Security();

                        var cells = line.Split(';');

                        for (var i = 0; i < proxySet.Length; i++)
                        {
                            proxySet[i].SetValue(security, cells[i].To(proxySet[i].ReturnType));
                        }

                        var id         = security.Id.ToSecurityId();
                        security.Code  = id.SecurityCode;
                        security.Board = _parent.ExchangeInfoProvider.GetOrCreateBoard(id.BoardCode);

                        _securities.Add(security);
                    }
                });
            }
        public MemberProxy <T> Of(object subject)
        {
            MemberProxy <T> cloned = (MemberProxy <T>)MemberwiseClone();

            cloned.subject = subject;
            return(cloned);
        }
示例#4
0
        public string GetFieldSummary(MemberProxy field)
        {
            if (field == null)
            {
                throw new ArgumentNullException("field");
            }

            return(GetSummary(field.DeclaringType, GetFieldXPath(field)));
        }
示例#5
0
        /**
         *
         * Param: parent The document level context for this override.
         * Param: target The component level context for this override.
         */
        /// <summary>
        /// Gets the targeted member based on the folowing logic:
        /// If target is supplied - as object - get its member using name
        /// If target is supplied - as string - find a target (object) and then get its member using name
        /// If target is not supplied - get the member on parent using name
        /// </summary>
        /// <param name="target"></param>
        /// <param name="parent"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        protected MemberProxy GetMember(object target, Component parent, string name)
        {
            if (target == null)
            {
                return(new MemberProxy(parent, name));
            }

            if (target is string)
            {
                target = new MemberProxy(parent, (string)target).GetValue();
            }

            return(new MemberProxy(target, name));
        }
示例#6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="parent"></param>
        public override void Apply(Component parent)
        {
            //Debug.Log("SetProperty->Apply: Name: " + Name + "; Value: " + Value);

            _appliedTarget = GetTarget(Target, parent);
            _pseudonym     = GetPseudonym(_appliedTarget, Name);

            _mp = new MemberProxy(_appliedTarget, _pseudonym); //_mp = GetMember(Target, parent, _pseudonym);
            if (!Applied)
            {
                _oldValue = _mp.GetValue();
            }
            _mp.SetValue(Value);

            // buggy caching (tries to do Color to Rotation)
            //MemberWrapper mw = new MemberWrapper(_appliedTarget.GetType(), _pseudonym);

            /*MemberWrapper mw = GlobalMemberCache.Instance.Get(_appliedTarget.GetType(), _pseudonym);
             * if (null == mw) {
             *  mw = new MemberWrapper(_appliedTarget.GetType(), _pseudonym);
             *  GlobalMemberCache.Instance.Put(_appliedTarget.GetType(), _pseudonym, mw);
             * }
             * if (!Applied)
             * {
             *  _oldValue = mw.GetValue(_appliedTarget);
             * }
             * mw.SetValue(_appliedTarget, Value);*/

            _relatedProps = GetRelatedProperties(_appliedTarget, _pseudonym);
            if (_relatedProps.Count > 0)
            {
                if (null == _oldRelatedValues)
                {
                    _oldRelatedValues = new List <object>();                    // lazily
                }
                else
                {
                    _oldRelatedValues.Clear();
                }

                foreach (string property in _relatedProps)
                {
                    _oldRelatedValues.Add(new MemberProxy(_appliedTarget, property).GetValue());
                }
            }

            Applied = true;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="CsvMarketDataSerializer{T}"/>.
        /// </summary>
        /// <param name="securityId">Security ID.</param>
        /// <param name="executionType">The type of execution.</param>
        /// <param name="candleArg">Candle arg.</param>
        /// <param name="encoding">Encoding.</param>
        public CsvMarketDataSerializer(SecurityId securityId, ExecutionTypes?executionType = null, object candleArg = null, Encoding encoding = null)
        {
            if (securityId.IsDefault() && !_isNews)
            {
                throw new ArgumentNullException(nameof(securityId));
            }

            SecurityId     = securityId;
            _executionType = executionType;
            _candleArg     = candleArg;
            _encoding      = encoding ?? _utf;

            if (_isQuotes)
            {
                return;
            }

            _format = GetFormat(executionType).Replace(":{0}", ".UtcDateTime:" + _timeFormat);

            if (_isLevel1)
            {
                return;
            }

            const string timeFormat = ":" + _timeFormat;

            _members = _info.SafeAdd(Tuple.Create(typeof(TData), executionType), key =>
                                     _format
                                     .Split(';')
                                     .Skip(_skipColumns)
                                     .Select(s =>
                                             MemberProxy.Create(typeof(TData),
                                                                s.Substring(1, s.Length - 2).Replace(timeFormat, string.Empty)))
                                     .Concat(_isNews ? new[] { MemberProxy.Create(typeof(TData), "SecurityId") } : Enumerable.Empty <MemberProxy>())
                                     .ToArray());

            if (typeof(TData) == typeof(ExecutionMessage))
            {
                switch (executionType)
                {
                case ExecutionTypes.Tick:
                case ExecutionTypes.OrderLog:
                    _toId = lines => lines[_skipColumns].To <long>();
                    break;
                }
            }
        }
示例#8
0
        // ReSharper restore StaticFieldInGenericType

        static CsvMarketDataSerializer()
        {
            _timeFormat = GetTimeFormat();

            if (typeof(TData) == typeof(ExecutionMessage) || typeof(TData).IsSubclassOf(typeof(CandleMessage)))
            {
                _setSecurityId = MemberProxy.Create(typeof(TData), "SecurityId");
            }

            if (typeof(TData) == typeof(ExecutionMessage))
            {
                _setExecutionType = MemberProxy.Create(typeof(TData), "ExecutionType");
            }

            _ctor = FastInvoker <VoidType, VoidType, TData> .Create(typeof(TData).GetMember <ConstructorInfo>());

            _dateMember = MemberProxy.Create(typeof(TData),
                                             typeof(TData).IsSubclassOf(typeof(CandleMessage)) ? "OpenTime" : "ServerTime");
        }
示例#9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="parent"></param>
        public override void Remove(Component parent)
        {
            //Debug.Log("SetStyle->Remove: Name: " + Name + "; Value: " + Value);

            var obj = (IStyleClient)_appliedTarget;

            // ovo je fakat čudno, njihova logika ne radi (ili ima bug)
            // što znači "clearate" style - maknut ga iz style deklaracije ili ga staviti unutra s vrijednosti "undefined"???

            if (_wasInline)
            {
                // Restore the old value

                /*if (_oldValue == null)
                 *  obj.ClearStyle(Name);
                 * else*/
                obj.SetStyle(Name, _oldValue); // apply whatever the old value is
            }
            else
            {
                obj.ClearStyle(Name);
            }

            //obj.SetStyle(Name, _oldValue);

            //_relatedProps = GetRelatedProperties(_appliedTarget, _pseudonym);
            if (null != _relatedProps)
            {
                for (var i = 0; i < _relatedProps.Count; i++)
                {
                    _mp = new MemberProxy(_appliedTarget, _relatedProps[i]);
                    _mp.SetValue(_oldRelatedValues[i]);
                }
            }

            Applied        = false;
            _appliedTarget = null;
        }
        // ReSharper restore StaticFieldInGenericType

        static CsvMarketDataSerializer()
        {
            var isCandles = typeof(TData).IsCandleMessage();

            if (typeof(TData) == typeof(ExecutionMessage) || isCandles)
            {
                _setSecurityId = MemberProxy.Create(typeof(TData), "SecurityId");
            }

            if (typeof(TData) == typeof(ExecutionMessage))
            {
                _setExecutionType = MemberProxy.Create(typeof(TData), "ExecutionType");
            }

            if (isCandles)
            {
                _setCandleArg = MemberProxy.Create(typeof(TData), "Arg");
            }

            _ctor = FastInvoker <VoidType, VoidType, TData> .Create(typeof(TData).GetMember <ConstructorInfo>());

            _dateMember = MemberProxy.Create(typeof(TData), isCandles ? "OpenTime" : "ServerTime");
        }
示例#11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="parent"></param>
        public override void Remove(Component parent)
        {
            //Debug.Log("SetProperty->Remove: Name: " + Name + "; Value: " + Value);

            //_appliedTarget = GetTarget(_appliedTarget, parent);
            _pseudonym = GetPseudonym(_appliedTarget, Name);

            // Special case for width and height. Restore the "width" and
            // "height" properties instead of explicitWidth/explicitHeight
            // so they can be kept in sync.
            if ((Name == "Width" || Name == "Height") && null != (_oldValue as float?))
            {
                _pseudonym = Name;
            }

            _mp = new MemberProxy(_appliedTarget, _pseudonym);             // buggy caching (tries to do Color to Rotation)
            _mp.SetValue(_oldValue);

            /*MemberWrapper mw = new MemberWrapper(_appliedTarget.GetType(), _pseudonym);
             * mw.SetValue(_appliedTarget, _oldValue);*/

            _oldValue = null;

            //_relatedProps = GetRelatedProperties(_appliedTarget, _pseudonym);
            if (null != _relatedProps)
            {
                for (var i = 0; i < _relatedProps.Count; i++)
                {
                    _mp = new MemberProxy(_appliedTarget, _relatedProps[i]);
                    _mp.SetValue(_oldRelatedValues[i]);
                }
            }

            Applied        = false;
            _appliedTarget = null;
        }
示例#12
0
 private static string GetFieldXPath(MemberProxy field)
 {
     return(String.Format(CultureInfo.InvariantCulture, "/doc/members/member[@name = 'F:{0}.{1}']", field.DeclaringType.FullName, field.Name));
 }