internal void UpdateItemBodyTagMismatched(StoreObjectId storeId) { ItemOptimizationStatus itemOptimizationStatus = this.GetOptimizationInfo(storeId); if ((itemOptimizationStatus & ItemOptimizationStatus.Extracted) == ItemOptimizationStatus.Extracted) { return; } if ((itemOptimizationStatus & ItemOptimizationStatus.BodyTagMismatched) == ItemOptimizationStatus.BodyTagMismatched) { return; } if ((itemOptimizationStatus & ItemOptimizationStatus.NonMsHeader) == ItemOptimizationStatus.NonMsHeader) { this.nonMSHeaderCount--; itemOptimizationStatus &= ~ItemOptimizationStatus.NonMsHeader; } if ((itemOptimizationStatus & ItemOptimizationStatus.BodyFormatMismatched) == ItemOptimizationStatus.BodyFormatMismatched) { this.bodyFormatMismatchedCount--; itemOptimizationStatus &= ~ItemOptimizationStatus.BodyFormatMismatched; } this.bodyTagMismatchedCount++; this.optimizationStatus[storeId] = (itemOptimizationStatus | ItemOptimizationStatus.BodyTagMismatched); }
internal void UpdateItemExtracted(StoreObjectId storeId) { ItemOptimizationStatus itemOptimizationStatus = this.GetOptimizationInfo(storeId); if ((itemOptimizationStatus & ItemOptimizationStatus.Opened) != ItemOptimizationStatus.None) { throw new InvalidOperationException("Can't extract already opened item"); } if ((itemOptimizationStatus & ItemOptimizationStatus.IrmProtected) == ItemOptimizationStatus.IrmProtected) { throw new InvalidOperationException("Can't extract from an IRM message"); } if ((itemOptimizationStatus & ItemOptimizationStatus.BodyTagNotPresent) == ItemOptimizationStatus.BodyTagNotPresent) { itemOptimizationStatus &= ~ItemOptimizationStatus.BodyTagNotPresent; } if ((itemOptimizationStatus & ItemOptimizationStatus.AttachmentPresnet) == ItemOptimizationStatus.AttachmentPresnet) { throw new InvalidOperationException("Can't extract item that has Attachments"); } if ((itemOptimizationStatus & ItemOptimizationStatus.MapiAttachmentPresent) == ItemOptimizationStatus.MapiAttachmentPresent) { throw new InvalidOperationException("Can't extract item that has MAPI Attachments"); } if ((itemOptimizationStatus & ItemOptimizationStatus.PossibleInlines) == ItemOptimizationStatus.PossibleInlines) { throw new InvalidOperationException("Can't extract item that has inlines"); } if ((itemOptimizationStatus & ItemOptimizationStatus.NonMsHeader) == ItemOptimizationStatus.NonMsHeader) { this.nonMSHeaderCount--; itemOptimizationStatus &= ~ItemOptimizationStatus.NonMsHeader; } if ((itemOptimizationStatus & ItemOptimizationStatus.BodyTagMismatched) == ItemOptimizationStatus.BodyTagMismatched) { this.bodyTagMismatchedCount--; itemOptimizationStatus &= ~ItemOptimizationStatus.BodyTagMismatched; } if ((itemOptimizationStatus & ItemOptimizationStatus.BodyFormatMismatched) == ItemOptimizationStatus.BodyFormatMismatched) { this.bodyFormatMismatchedCount--; itemOptimizationStatus &= ~ItemOptimizationStatus.BodyFormatMismatched; } if ((itemOptimizationStatus & ItemOptimizationStatus.ParticipantNotFound) == ItemOptimizationStatus.ParticipantNotFound) { this.participantNotFoundCount--; itemOptimizationStatus &= ~ItemOptimizationStatus.ParticipantNotFound; } if ((itemOptimizationStatus & ItemOptimizationStatus.ExtraPropertiesNeeded) == ItemOptimizationStatus.ExtraPropertiesNeeded) { this.extraPropertiesNeededCount--; itemOptimizationStatus &= ~ItemOptimizationStatus.ExtraPropertiesNeeded; } if ((itemOptimizationStatus & ItemOptimizationStatus.Extracted) == ItemOptimizationStatus.Extracted) { return; } this.itemsExtracted++; this.optimizationStatus[storeId] = (itemOptimizationStatus | ItemOptimizationStatus.Extracted); }
internal void UpdateItemParticipantNotFound(StoreObjectId storeId) { ItemOptimizationStatus optimizationInfo = this.GetOptimizationInfo(storeId); if ((optimizationInfo & ItemOptimizationStatus.ParticipantNotFound) == ItemOptimizationStatus.ParticipantNotFound) { return; } this.participantNotFoundCount++; this.optimizationStatus[storeId] = (optimizationInfo | ItemOptimizationStatus.ParticipantNotFound); }
internal void UpdateItemSummaryConstructed(StoreObjectId storeId) { ItemOptimizationStatus optimizationInfo = this.GetOptimizationInfo(storeId); if ((optimizationInfo & ItemOptimizationStatus.SummaryConstructed) == ItemOptimizationStatus.SummaryConstructed) { return; } this.summaryConstructed++; this.optimizationStatus[storeId] = (optimizationInfo | ItemOptimizationStatus.SummaryConstructed); }
internal void UpdateItemOpened(StoreObjectId storeId) { ItemOptimizationStatus optimizationInfo = this.GetOptimizationInfo(storeId); ItemOptimizationStatus itemOptimizationStatus = optimizationInfo & ItemOptimizationStatus.Extracted; if ((optimizationInfo & ItemOptimizationStatus.Opened) == ItemOptimizationStatus.Opened) { return; } this.itemsOpened++; this.optimizationStatus[storeId] = (optimizationInfo | ItemOptimizationStatus.Opened); }
internal void UpdateItemIsLeafNode(StoreObjectId storeId) { ItemOptimizationStatus itemOptimizationStatus = this.GetOptimizationInfo(storeId); if ((itemOptimizationStatus & ItemOptimizationStatus.LeafNode) == ItemOptimizationStatus.LeafNode) { return; } itemOptimizationStatus |= ItemOptimizationStatus.LeafNode; this.optimizationStatus[storeId] = itemOptimizationStatus; this.leafNodes++; }
internal void UpdateItemIrmProtected(StoreObjectId storeId) { ItemOptimizationStatus optimizationInfo = this.GetOptimizationInfo(storeId); if ((optimizationInfo & ItemOptimizationStatus.Extracted) == ItemOptimizationStatus.Extracted) { throw new InvalidOperationException("Item already loaded"); } if ((optimizationInfo & ItemOptimizationStatus.IrmProtected) == ItemOptimizationStatus.IrmProtected) { return; } this.irmProtectedCount++; this.optimizationStatus[storeId] = (optimizationInfo | ItemOptimizationStatus.IrmProtected); }
internal void UpdateItemMapiAttachmentPresent(StoreObjectId storeId) { ItemOptimizationStatus optimizationInfo = this.GetOptimizationInfo(storeId); if ((optimizationInfo & ItemOptimizationStatus.Extracted) == ItemOptimizationStatus.Extracted) { throw new InvalidOperationException("Item already loaded"); } if ((optimizationInfo & ItemOptimizationStatus.MapiAttachmentPresent) == ItemOptimizationStatus.MapiAttachmentPresent) { return; } this.mapiAttachmentPresentCount++; this.optimizationStatus[storeId] = (optimizationInfo | ItemOptimizationStatus.MapiAttachmentPresent); }
internal void UpdateItemMayHaveInline(StoreObjectId storeId) { ItemOptimizationStatus optimizationInfo = this.GetOptimizationInfo(storeId); if ((optimizationInfo & ItemOptimizationStatus.Extracted) == ItemOptimizationStatus.Extracted) { throw new InvalidOperationException("Extrated message may not have parent and inlines"); } if ((optimizationInfo & ItemOptimizationStatus.PossibleInlines) == ItemOptimizationStatus.PossibleInlines) { return; } this.possibleInlinesCount++; this.optimizationStatus[storeId] = (optimizationInfo | ItemOptimizationStatus.PossibleInlines); }
internal void UpdateItemBodyFormatMismatched(StoreObjectId storeId) { ItemOptimizationStatus optimizationInfo = this.GetOptimizationInfo(storeId); if ((optimizationInfo & ItemOptimizationStatus.Extracted) == ItemOptimizationStatus.Extracted) { return; } if ((optimizationInfo & ItemOptimizationStatus.BodyFormatMismatched) == ItemOptimizationStatus.BodyFormatMismatched) { return; } if ((optimizationInfo & ItemOptimizationStatus.BodyTagMismatched) == ItemOptimizationStatus.BodyTagMismatched) { return; } this.bodyFormatMismatchedCount++; this.optimizationStatus[storeId] = (optimizationInfo | ItemOptimizationStatus.BodyFormatMismatched); }