Esempio n. 1
0
        /// <inheritdoc cref="cStoreFeedback.Summary" select="summary|returns|remarks"/>
        public sStoreFeedbackSummary Summary()
        {
            sStoreFeedbackSummary lSummary = new sStoreFeedbackSummary();

            foreach (var lItem in mItems)
            {
                lItem.IncrementSummary(lItem.MessageHandle, mOperation, mFlags, ref lSummary);
            }
            return(lSummary);
        }
Esempio n. 2
0
        internal void IncrementSummary(iMessageHandle pMessageHandle, eStoreOperation pOperation, cStorableFlags pFlags, ref sStoreFeedbackSummary pSummary)
        {
            if (WasNotUnchangedSince)
            {
                pSummary.WasNotUnchangedSinceCount++;
                return;
            }

            if (ReceivedFlagsUpdate)
            {
                pSummary.UpdatedCount++;
                return;
            }

            if (pMessageHandle == null)
            {
                pSummary.UnknownCount++;
                return;
            }

            if (pMessageHandle.Expunged)
            {
                pSummary.ExpungedCount++;
                return;
            }

            if (pMessageHandle.Flags == null)
            {
                pSummary.UnknownCount++;
                return;
            }

            switch (pOperation)
            {
            case eStoreOperation.add:

                if (pMessageHandle.Flags.Contains(pFlags))
                {
                    pSummary.ReflectsOperationCount++;
                }
                else
                {
                    pSummary.NotReflectsOperationCount++;
                }
                return;

            case eStoreOperation.remove:

                if (pMessageHandle.Flags.Contains(pFlags))
                {
                    pSummary.NotReflectsOperationCount++;
                }
                else
                {
                    pSummary.ReflectsOperationCount++;
                }
                return;

            case eStoreOperation.replace:

                if (pMessageHandle.Flags.SymmetricDifference(pFlags, kMessageFlag.Recent).Count() == 0)
                {
                    pSummary.ReflectsOperationCount++;
                }
                else
                {
                    pSummary.NotReflectsOperationCount++;
                }
                return;
            }

            pSummary.UnknownCount++; // shouldn't happen
        }