protected override ConversationAggregationResult ConstructResult(ConversationIndex.FixupStage bySubjectResultingStage, ConversationIndex bySubjectResultingIndex, IStorePropertyBag parentItem, bool participantRemoved) { ConversationAggregationResult conversationAggregationResult = this.ConstructResult(bySubjectResultingStage, bySubjectResultingIndex, parentItem); if (participantRemoved) { conversationAggregationResult.Stage |= ConversationIndex.FixupStage.TC; conversationAggregationResult.ConversationFamilyId = ConversationId.Create(Guid.NewGuid()); } return(conversationAggregationResult); }
protected override ConversationAggregationResult ConstructResult(ConversationIndex.FixupStage bySubjectResultingStage, ConversationIndex bySubjectResultingIndex, IStorePropertyBag parentItem) { ConversationAggregationResult conversationAggregationResult = base.ConstructResult(bySubjectResultingStage, bySubjectResultingIndex, parentItem); if (AudienceBasedConversationAggregator.IsMessageCreatingNewConversation(parentItem, bySubjectResultingStage)) { conversationAggregationResult.SupportsSideConversation = true; conversationAggregationResult.ConversationFamilyId = ConversationId.Create(bySubjectResultingIndex); } else { conversationAggregationResult.SupportsSideConversation = AudienceBasedConversationAggregator.SupportsSideConversation(parentItem); conversationAggregationResult.ConversationFamilyId = parentItem.GetValueOrDefault <ConversationId>(ItemSchema.ConversationFamilyId, null); } return(conversationAggregationResult); }
public override ConversationAggregationResult Aggregate(ICoreItem message) { return(this.diagnosticsFrame.TrackAggregation(base.GetType().Name, delegate(IConversationAggregationLogger logger) { bool shouldSearchForDuplicatedMessage = this.ShouldSearchForDuplicatedMessage(message.PropertyBag); logger.LogMailboxOwnerData(this.mailboxOwner, shouldSearchForDuplicatedMessage); logger.LogDeliveredMessageData(message.PropertyBag); IStorePropertyBag storePropertyBag; ConversationIndex bySubjectResultingIndex; ConversationIndex.FixupStage fixupStage; this.ReferencesProcessor.Aggregate(message.PropertyBag, shouldSearchForDuplicatedMessage, out storePropertyBag, out bySubjectResultingIndex, out fixupStage); logger.LogParentMessageData(storePropertyBag); bool participantRemoved = false; if (this.participantProcessor.ShouldAggregate(message.PropertyBag, storePropertyBag, fixupStage)) { participantRemoved = this.participantProcessor.Aggregate(logger, message.PropertyBag, storePropertyBag); } ConversationAggregationResult conversationAggregationResult = this.ConstructResult(fixupStage, bySubjectResultingIndex, storePropertyBag, participantRemoved); logger.LogAggregationResultData(conversationAggregationResult); return conversationAggregationResult; })); }