Beispiel #1
0
            public bool TryGetAndRemoveLookup <TMessage, TItem>(IOriginalTransactionIdMessage result, out TMessage criteria, out TItem[] items)
                where TMessage : Message, ISubscriptionMessage
            {
                criteria = null;
                items    = null;

                lock (_syncObject)
                {
                    var info = _subscriptions.TryGetAndRemove(result.OriginalTransactionId);

                    if (info == null)
                    {
                        return(false);
                    }

                    if (info.KeepAfterFinish)
                    {
                        _finished.Add(info);
                    }

                    var lookup = info.Lookup;
                    if (lookup == null)
                    {
                        return(false);
                    }

                    criteria = (TMessage)lookup.Criteria;
                    items    = lookup.Items.CopyAndClear().Cast <TItem>().ToArray();
                    return(true);
                }
            }
Beispiel #2
0
            public void ProcessLookupResponse(IOriginalTransactionIdMessage message, object item)
            {
                var info = TryGetInfo(message.OriginalTransactionId, false);

                if (info == null)
                {
                    return;
                }

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

                info.Lookup.Items.Add(item);
            }
Beispiel #3
0
 public LookupInfo TryGetAndRemoveLookup(IOriginalTransactionIdMessage result)
 {
     lock (_syncObject)
         return(_subscriptions.TryGetAndRemove(result.OriginalTransactionId)?.Lookup);
 }