Example #1
0
 public TrackingContext(LogCache cache, DirectoryContext directoryContext, MessageTrackingReportId startingEventId)
 {
     this.tree             = new EventTree();
     this.cache            = cache;
     this.directoryContext = directoryContext;
     this.startingEventId  = startingEventId;
 }
Example #2
0
 private static bool AtLeastOneAddressFoundInProxies(string[] addresses, ProxyAddressCollection[] proxies)
 {
     foreach (ProxyAddressCollection proxyCollection in proxies)
     {
         if (LogCache.AtLeastOneAddressFoundInProxy(addresses, proxyCollection))
         {
             return(true);
         }
     }
     return(false);
 }
Example #3
0
        public List <MessageTrackingLogEntry> GetMessageLog(RpcReason rpcReason, ILogReader reader, TrackingLogPrefix logPrefix, ProxyAddressCollection senderAddresses, MessageTrackingSource eventSource, HashSet <MessageTrackingEvent> eventIdFilterSet, ProxyAddressCollection[] recipientAddresses, string messageId)
        {
            List <MessageTrackingLogEntry> list = new List <MessageTrackingLogEntry>();
            string text = null;
            bool   flag = false;

            if (senderAddresses == null && string.IsNullOrEmpty(messageId))
            {
                throw new ArgumentException("Either senderAddresses or messageId must be specified to use log cache");
            }
            if (!string.IsNullOrEmpty(messageId))
            {
                text = TrackingSearch.RemoveAngleBracketsIfNeeded(messageId);
            }
            List <MessageTrackingLogEntry> messageLog;

            if (!string.IsNullOrEmpty(text))
            {
                messageLog = this.GetMessageLog(rpcReason, reader, logPrefix, text);
                flag       = true;
            }
            else
            {
                messageLog = this.GetMessageLog(rpcReason, reader, logPrefix, senderAddresses);
            }
            foreach (MessageTrackingLogEntry messageTrackingLogEntry in messageLog)
            {
                if (messageTrackingLogEntry.Source == eventSource && (eventIdFilterSet == null || eventIdFilterSet.Contains(messageTrackingLogEntry.EventId)) && (!flag || senderAddresses == null || LogCache.AtLeastOneAddressFoundInProxy(new string[]
                {
                    messageTrackingLogEntry.SenderAddress
                }, senderAddresses)) && (recipientAddresses == null || LogCache.AtLeastOneAddressFoundInProxies(messageTrackingLogEntry.RecipientAddresses, recipientAddresses)))
                {
                    list.Add(messageTrackingLogEntry);
                }
            }
            return(list);
        }