示例#1
0
        internal static cMessageHandleList FromMessages(IEnumerable <cMessage> pMessages)
        {
            if (pMessages == null)
            {
                throw new ArgumentNullException(nameof(pMessages));
            }

            object             lMessageCache   = null;
            cMessageHandleList lMessageHandles = new cMessageHandleList();

            foreach (var lMessage in pMessages)
            {
                if (lMessage == null)
                {
                    throw new ArgumentOutOfRangeException(nameof(pMessages), "contains nulls");
                }
                if (lMessageCache == null)
                {
                    lMessageCache = lMessage.MessageHandle.MessageCache;
                }
                else if (!ReferenceEquals(lMessage.MessageHandle.MessageCache, lMessageCache))
                {
                    throw new ArgumentOutOfRangeException(nameof(pMessages), "contains mixed message caches");
                }
                lMessageHandles.Add(lMessage.MessageHandle);
            }

            return(new cMessageHandleList(lMessageHandles.Distinct()));
        }
示例#2
0
        internal cStoreFeedback(IEnumerable <cMessage> pMessages, eStoreOperation pOperation, cStorableFlags pFlags)
        {
            if (pMessages == null)
            {
                throw new ArgumentNullException(nameof(pMessages));
            }
            if (pFlags == null)
            {
                throw new ArgumentNullException(nameof(pFlags));
            }

            object lMessageCache = null;

            cMessageHandleList lMessageHandles = new cMessageHandleList();

            foreach (var lMessage in pMessages)
            {
                if (lMessage == null)
                {
                    throw new ArgumentOutOfRangeException(nameof(pMessages), "contains nulls");
                }
                var lMessageHandle = lMessage.MessageHandle;
                if (lMessageCache == null)
                {
                    lMessageCache = lMessageHandle.MessageCache;
                }
                else if (!ReferenceEquals(lMessageHandle.MessageCache, lMessageCache))
                {
                    throw new ArgumentOutOfRangeException(nameof(pMessages), "contains mixed message caches");
                }
                lMessageHandles.Add(lMessageHandle);
            }

            mItems     = new List <cStoreFeedbackItem>(from lMessageHandle in lMessageHandles.Distinct() select new cStoreFeedbackItem(lMessageHandle));
            mOperation = pOperation;
            mFlags     = pFlags;
        }