Esempio n. 1
0
        public Tuple <News, bool> ProcessNewsMessage(Security security, NewsMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }

            var isNew = false;

            News news;

            if (!message.Id.IsEmpty())
            {
                news = _cache.NewsById.SafeAdd(message.Id, key =>
                {
                    isNew = true;
                    return(EntityFactory.CreateNews());
                });
            }
            else
            {
                isNew = true;

                news = EntityFactory.CreateNews();
                _cache.NewsWithoutId.Add(news);
            }

            if (isNew)
            {
                news.ServerTime = message.ServerTime;
                news.LocalTime  = message.LocalTime;
            }

            if (!message.Source.IsEmpty())
            {
                news.Source = message.Source;
            }

            if (!message.Headline.IsEmpty())
            {
                news.Headline = message.Headline;
            }

            if (security != null)
            {
                news.Security = security;
            }

            if (!message.Story.IsEmpty())
            {
                news.Story = message.Story;
            }

            if (!message.BoardCode.IsEmpty())
            {
                news.Board = ExchangeBoard.GetOrCreateBoard(message.BoardCode);
            }

            if (message.Url != null)
            {
                news.Url = message.Url;
            }

            message.CopyExtensionInfo(news);

            return(Tuple.Create(news, isNew));
        }