protected override int GetNodePriorities(Node node, out int secondaryPriority) { MessageTrackingLogEntry logEntry = (MessageTrackingLogEntry)node.Value; secondaryPriority = EventTree.GetSecondaryPriority(node, true); return(EventTree.GetEventPriorityForBestResultLeaf(logEntry, this.deprioritizeHa)); }
public List <List <MessageTrackingLogEntry> > GetHandedOffRecipPaths() { EventTree tree = this.context.Tree; ICollection <Node> leafNodes = tree.GetLeafNodes(); if (leafNodes == null || leafNodes.Count == 0) { return(null); } List <List <MessageTrackingLogEntry> > list = null; foreach (Node node in leafNodes) { MessageTrackingLogEntry messageTrackingLogEntry = (MessageTrackingLogEntry)node.Value; if ((messageTrackingLogEntry.EventId == MessageTrackingEvent.SEND && messageTrackingLogEntry.Source == MessageTrackingSource.SMTP) || (messageTrackingLogEntry.EventId == MessageTrackingEvent.EXPAND && messageTrackingLogEntry.FederatedDeliveryAddress != null) || messageTrackingLogEntry.EventId == MessageTrackingEvent.INITMESSAGECREATED) { ICollection <Node> pathToLeaf = tree.GetPathToLeaf(node.Key); List <MessageTrackingLogEntry> list2 = new List <MessageTrackingLogEntry>(pathToLeaf.Count); foreach (Node node2 in pathToLeaf) { MessageTrackingLogEntry messageTrackingLogEntry2 = (MessageTrackingLogEntry)node2.Value; messageTrackingLogEntry2.RecipientAddress = node2.Key; list2.Add(messageTrackingLogEntry2); } if (list == null) { list = new List <List <MessageTrackingLogEntry> >(); } list.Add(list2); } } return(list); }
private static int GetSecondaryPriority(Node node, bool forPathPicking) { MessageTrackingLogEntry messageTrackingLogEntry = (MessageTrackingLogEntry)node.Value; bool recipientMatchesRoot = !forPathPicking || string.Equals(node.Key, messageTrackingLogEntry.RootAddress, StringComparison.OrdinalIgnoreCase); return(EventTree.GetSecondaryPriority(messageTrackingLogEntry.BccRecipient == null || messageTrackingLogEntry.BccRecipient.Value, messageTrackingLogEntry.HiddenRecipient, recipientMatchesRoot)); }
protected override int GetNodePriorities(Node node, out int secondaryPriority) { RecipientTrackingEvent recipientTrackingEvent = (RecipientTrackingEvent)node.Value; EventDescriptionInformation eventDescriptionInformation; if (!EnumAttributeInfo <EventDescription, EventDescriptionInformation> .TryGetValue((int)recipientTrackingEvent.EventDescription, out eventDescriptionInformation)) { throw new InvalidOperationException(string.Format("Value {0} was not annotated", Names <EventDescription> .Map[(int)recipientTrackingEvent.EventDescription])); } secondaryPriority = EventTree.GetSecondaryPriority(recipientTrackingEvent.BccRecipient, recipientTrackingEvent.HiddenRecipient, string.Equals(recipientTrackingEvent.RootAddress, (string)recipientTrackingEvent.RecipientAddress, StringComparison.OrdinalIgnoreCase)); return(eventDescriptionInformation.EventPriority); }
private static bool IsEntryProcessed(MessageTrackingLogEntry entry, EventTree tree) { return(entry.ProcessedBy == tree); }
private Node FindParentMatchingParameters(MessageTrackingLogEntry childEntryValue, long?mailItemId, MessageTrackingEvent[] eventTypes, EventTree.EventMatchingCondition eventMatchingCondition, MessageTrackingSource?source, LinkedList <Node> possibleParents) { Node node = null; foreach (Node node2 in possibleParents) { MessageTrackingLogEntry messageTrackingLogEntry = (MessageTrackingLogEntry)node2.Value; if (messageTrackingLogEntry != childEntryValue && !messageTrackingLogEntry.SharesRowDataWithEntry(childEntryValue) && string.IsNullOrEmpty(messageTrackingLogEntry.FederatedDeliveryAddress)) { if (mailItemId != null) { long num; if (messageTrackingLogEntry.EventId == MessageTrackingEvent.TRANSFER || messageTrackingLogEntry.EventId == MessageTrackingEvent.RESUBMIT) { num = messageTrackingLogEntry.InternalMessageId; } else { num = messageTrackingLogEntry.ServerLogKeyMailItemId; } if (mailItemId != num) { continue; } } if (eventTypes != null) { bool flag = eventMatchingCondition == EventTree.EventMatchingCondition.MustMatch; bool flag2 = !flag; foreach (MessageTrackingEvent messageTrackingEvent in eventTypes) { if (messageTrackingEvent == messageTrackingLogEntry.EventId) { flag2 = flag; break; } } if (!flag2) { continue; } } if ((source == null || source.Value == messageTrackingLogEntry.Source) && (node == null || EventTree.GetSecondaryPriority(node, false) >= EventTree.GetSecondaryPriority(node2, false))) { node = node2; } } } return(node); }
public MailItemTracker(List <MessageTrackingLogEntry> entries, EventTree tree) { this.tree = tree; this.entriesForMailItem = entries; }