Example #1
0
        private void RaiseSecuritiesChanged(Security[] securities)
        {
            SecuritiesChanged.SafeInvoke(securities);

            var evt = SecurityChanged;

            if (evt == null)
            {
                return;
            }

            foreach (var security in securities)
            {
                evt(security);
            }
        }
        private void AddSuffix(Security security)
        {
            lock (_trie)
            {
                AddSuffix(security.Id, security);
                AddSuffix(security.Code, security);
                AddSuffix(security.Name, security);
                AddSuffix(security.ShortName, security);
            }

            if (ExcludeFilter != null && ExcludeFilter(security))
            {
                ExcludedCount++;
            }

            SecuritiesChanged.SafeInvoke(NotifyCollectionChangedAction.Add, security);
        }
Example #3
0
        private void AddSuffix(Security security)
        {
            lock (_trie)
            {
                AddSuffix(security.Id, security);
                AddSuffix(security.Code, security);
                AddSuffix(security.Name, security);
                AddSuffix(security.ShortName, security);
                AddSuffix(security.ExternalId.Bloomberg, security);
                AddSuffix(security.ExternalId.Cusip, security);
                AddSuffix(security.ExternalId.Isin, security);
                AddSuffix(security.ExternalId.Ric, security);
                AddSuffix(security.ExternalId.Sedol, security);
            }

            if (ExcludeFilter != null && ExcludeFilter(security))
            {
                ExcludedCount++;
            }

            SecuritiesChanged.SafeInvoke(NotifyCollectionChangedAction.Add, security);
        }
        /// <summary>
        /// Создать <see cref="FilterableSecurityProvider"/>.
        /// </summary>
        /// <param name="securities">Инструменты.</param>
        /// <param name="excludeFilter">Фильтр для исключения инструментов.</param>
        public FilterableSecurityProvider(ISecurityList securities, Func <Security, bool> excludeFilter = null)
        {
            if (securities == null)
            {
                throw new ArgumentNullException("securities");
            }

            Securities    = securities;
            ExcludeFilter = excludeFilter;

            Securities.Added    += AddSuffix;
            Securities.Inserted += (i, s) => AddSuffix(s);

            Securities.Removed += s =>
            {
                lock (_trie)
                    _trie.Remove(s);

                if (ExcludeFilter != null && ExcludeFilter(s))
                {
                    ExcludedCount--;
                }

                SecuritiesChanged.SafeInvoke(NotifyCollectionChangedAction.Remove, s);
            };

            Securities.Cleared += () =>
            {
                lock (_trie)
                    _trie.Clear();

                ExcludedCount = 0;
                SecuritiesChanged.SafeInvoke(NotifyCollectionChangedAction.Reset, null);
            };

            Securities.ForEach(AddSuffix);
        }
Example #5
0
 private void RealTraderOnSecuritiesChanged(IEnumerable <Security> securities)
 {
     SecuritiesChanged.SafeInvoke(this, new SecuritiesEventArgs(securities));
 }
Example #6
0
 private void SecuritiesChangedHandler(IEnumerable <Security> securities)
 {
     AddGuiAction(() => SecuritiesChanged.SafeInvoke(securities));
 }
Example #7
0
 /// <summary>
 /// To call the event <see cref="Connector.SecuritiesChanged"/>.
 /// </summary>
 /// <param name="securities">Instruments that should be passed to the event.</param>
 private void RaiseSecuritiesChanged(IEnumerable <Security> securities)
 {
     SecuritiesChanged.SafeInvoke(securities);
 }