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); } }
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); }
public LookupInfo TryGetAndRemoveLookup(IOriginalTransactionIdMessage result) { lock (_syncObject) return(_subscriptions.TryGetAndRemove(result.OriginalTransactionId)?.Lookup); }