Пример #1
0
            public IEnumerable <Subscription> ProcessLookupResponse <T>(ISubscriptionIdMessage message, T[] items)
            {
                var subscriptions = new List <Subscription>();

                foreach (var id in message.GetSubscriptionIds())
                {
                    var info = TryGetInfo(id, true, false, null, true);

                    if (info == null || info.HasResult)
                    {
                        continue;
                    }

                    if (info.LookupItems == null)
                    {
                        _connector.AddWarningLog(LocalizedStrings.Str2142Params, info.Subscription.SubscriptionMessage);
                        continue;
                    }

                    info.LookupItems.AddRange(items.Cast <object>());
                    subscriptions.Add(info.Subscription);
                }

                return(subscriptions);
            }
Пример #2
0
            public IEnumerable <Subscription> GetSubscriptions(ISubscriptionIdMessage message)
            {
                var time = message is IServerTimeMessage timeMsg ? timeMsg.ServerTime : (DateTimeOffset?)null;

                var processed = new HashSet <SubscriptionInfo>();

                foreach (var id in message.GetSubscriptionIds())
                {
                    var info = TryGetSubscription(id, false, false, time);

                    if (info == null)
                    {
                        continue;
                    }

                    if (!processed.Add(info))
                    {
                        continue;
                    }

                    if (info.Parent == null)
                    {
                        yield return(info.Subscription);
                    }
                    else
                    {
                        if (!processed.Add(info.Parent))
                        {
                            continue;
                        }

                        yield return(info.Parent.Subscription);
                    }
                }
            }
Пример #3
0
 private void TrySendToEmulator(ISubscriptionIdMessage message)
 {
     foreach (var id in message.GetSubscriptionIds())
     {
         if (_subscriptionIds.Contains(id))
         {
             SendToEmulator((Message)message);
             break;
         }
     }
 }
Пример #4
0
            public IEnumerable <Subscription> GetSubscriptions(ISubscriptionIdMessage message)
            {
                var time = message is IServerTimeMessage timeMsg ? timeMsg.ServerTime : (DateTimeOffset?)null;

                foreach (var id in message.GetSubscriptionIds())
                {
                    var subscription = TryGetSubscription(id, true, false, time);

                    if (subscription != null)
                    {
                        yield return(subscription);
                    }
                }
            }
Пример #5
0
        private bool CanStore(ISubscriptionIdMessage message)
        {
            if (!Enabled)
            {
                return(false);
            }

            if (!FilterSubscription)
            {
                return(true);
            }

            return(message.GetSubscriptionIds().Any(_subscriptionsById.Contains));
        }
        private void ApplySubscriptionIds(ISubscriptionIdMessage message, ChildSubscription child)
        {
            var ids       = message.GetSubscriptionIds();
            var initialId = child.Parent.Origin.TransactionId;
            var newIds    = child.Subscribers.CachedKeys.Concat(child.Parent.Alls.CachedKeys);

            if (ids.Length == 1 && ids[0] == initialId)
            {
                message.SetSubscriptionIds(newIds);
            }
            else
            {
                message.SetSubscriptionIds(ids.Where(id => id != initialId).Concat(newIds).ToArray());
            }
        }
Пример #7
0
        private void RaiseReceived <TEntity>(TEntity entity, ISubscriptionIdMessage message, Action <Subscription, TEntity> evt)
        {
            if (evt == null)
            {
                return;
            }

            foreach (var id in message.GetSubscriptionIds())
            {
                var subscription = TryGetSubscription(id);

                if (subscription != null)
                {
                    evt(subscription, entity);
                }
            }
        }
Пример #8
0
        private void RaiseReceived <TEntity>(TEntity entity, ISubscriptionIdMessage message, Action <Subscription, TEntity> evt)
        {
            if (evt == null)
            {
                return;
            }

            foreach (var id in message.GetSubscriptionIds())
            {
                if (!_subscriptions.TryGetValue(id, out var subscription))
                {
                    continue;
                }

                evt(subscription, entity);
            }
        }
Пример #9
0
        private void RaiseReceived <TEntity>(TEntity entity, ISubscriptionIdMessage message, Action <Subscription, TEntity> evt)
        {
            if (evt == null)
            {
                return;
            }

            var time = message is IServerTimeMessage timeMsg ? timeMsg.ServerTime : (DateTimeOffset?)null;

            foreach (var id in message.GetSubscriptionIds())
            {
                var subscription = _subscriptionManager.TryGetSubscription(id, false, time);

                if (subscription != null)
                {
                    evt(subscription, entity);
                }
            }
        }
Пример #10
0
            public void ProcessLookupResponse(ISubscriptionIdMessage message, object item)
            {
                foreach (var id in message.GetSubscriptionIds())
                {
                    var info = TryGetInfo(id, false);

                    if (info == null)
                    {
                        continue;
                    }

                    if (info.Lookup == null)
                    {
                        _connector.AddWarningLog(LocalizedStrings.Str2142Params, info.Subscription.SubscriptionMessage);
                        continue;
                    }

                    info.Lookup.Items.Add(item);
                }
            }
            public void ProcessLookupResponse <T>(ISubscriptionIdMessage message, T[] items)
            {
                foreach (var id in message.GetSubscriptionIds())
                {
                    var info = TryGetInfo(id, false);

                    if (info == null || info.HasResult)
                    {
                        continue;
                    }

                    if (info.LookupItems == null)
                    {
                        _connector.AddWarningLog(LocalizedStrings.Str2142Params, info.Subscription.SubscriptionMessage);
                        continue;
                    }

                    info.LookupItems.AddRange(items.Cast <object>());
                }
            }
Пример #12
0
        private void ApplySubscriptionIds(ISubscriptionIdMessage subscrMsg, ParentSubscription parent, long[] newIds)
        {
            var ids       = subscrMsg.GetSubscriptionIds();
            var initialId = parent.Origin.TransactionId;

            newIds = newIds.Concat(parent.Alls.CachedKeys);

            if (subscrMsg is ISecurityIdMessage secIdMsg && parent.NonAlls.TryGetValue(secIdMsg.SecurityId, out var set))
            {
                newIds = newIds.Concat(set.Cache);
            }

            if (ids.Length == 1 && ids[0] == initialId)
            {
                subscrMsg.SetSubscriptionIds(newIds);
            }
            else
            {
                subscrMsg.SetSubscriptionIds(ids.Where(id => id != initialId).Concat(newIds).ToArray());
            }
        }