コード例 #1
0
        private MessageTrace GetSplitMessage(MessageTrace sourceMessage, List <MessageRecipient> recipientList, Dictionary <Guid, Dictionary <Guid, MessageRecipientStatus> > eventRecipientStatusMap)
        {
            MessageTrace splitMessage = new MessageTrace();

            splitMessage.ExMessageId            = sourceMessage.ExMessageId;
            splitMessage.ClientMessageId        = sourceMessage.ClientMessageId;
            splitMessage.OrganizationalUnitRoot = sourceMessage.OrganizationalUnitRoot;
            splitMessage.Direction       = sourceMessage.Direction;
            splitMessage.FromEmailPrefix = sourceMessage.FromEmailPrefix;
            splitMessage.FromEmailDomain = sourceMessage.FromEmailDomain;
            splitMessage.IPAddress       = sourceMessage.IPAddress;
            sourceMessage.GetExtendedPropertiesEnumerable().ToList <MessageProperty>().ForEach(delegate(MessageProperty r)
            {
                splitMessage.AddExtendedProperty(r);
            });
            sourceMessage.Events.ForEach(delegate(MessageEvent r)
            {
                splitMessage.Add(this.GetSplitMessageEvent(r, recipientList, eventRecipientStatusMap[r.EventId]));
            });
            sourceMessage.Classifications.ForEach(delegate(MessageClassification r)
            {
                splitMessage.Add(r);
            });
            sourceMessage.ClientInformation.ForEach(delegate(MessageClientInformation r)
            {
                splitMessage.Add(r);
            });
            recipientList.ForEach(delegate(MessageRecipient r)
            {
                splitMessage.Add(r);
            });
            return(splitMessage);
        }
コード例 #2
0
        public MessageTrace[] FindPagedTrace(Guid organizationalUnitRoot, DateTime start, DateTime end, string fromEmailPrefix = null, string fromEmailDomain = null, string toEmailPrefix = null, string toEmailDomain = null, string clientMessageId = null, int rowIndex = 0, int rowCount = -1)
        {
            QueryFilter filter = MessageTraceSession.BuildQueryFilter(organizationalUnitRoot, start, end, fromEmailDomain, fromEmailPrefix, toEmailDomain, toEmailPrefix, clientMessageId);

            IConfigurable[] array  = this.DataProvider.Find <MessageTrace>(filter, null, false, null);
            MessageTrace[]  array2 = new MessageTrace[array.Length];
            for (int i = 0; i < array.Length; i++)
            {
                array2[i] = (MessageTrace)array[i];
            }
            return(array2);
        }
コード例 #3
0
        public int CompareTo(MessageTrace other)
        {
            if (other == null)
            {
                return(1);
            }
            int num = 0;

            byte[] array  = this.ExMessageId.ToByteArray();
            byte[] array2 = other.ExMessageId.ToByteArray();
            int    num2   = 10;

            while (num == 0 && num2 < 16)
            {
                num = array[num2].CompareTo(array2[num2]);
                num2++;
            }
            return(num);
        }
コード例 #4
0
        private IEnumerable <MessageTrace> SplitMessageForOptimizedSave(MessageTrace sourceMessage, int recipientSplitThreshold)
        {
            Dictionary <Guid, Dictionary <Guid, MessageRecipientStatus> > eventRecipientStatusMap = this.GetMessageEventRecipientStatusMap(sourceMessage);
            List <MessageRecipient> recipientList = new List <MessageRecipient>();

            foreach (MessageRecipient recipient in sourceMessage.Recipients)
            {
                recipientList.Add(recipient);
                if (recipientList.Count == recipientSplitThreshold)
                {
                    yield return(this.GetSplitMessage(sourceMessage, recipientList, eventRecipientStatusMap));

                    recipientList.Clear();
                }
            }
            if (recipientList.Count > 0)
            {
                yield return(this.GetSplitMessage(sourceMessage, recipientList, eventRecipientStatusMap));
            }
            yield break;
        }
コード例 #5
0
        public MessageTrace ConvertToMessageTraceObject()
        {
            Dictionary <Guid, MessageAction>                  dictionary  = new Dictionary <Guid, MessageAction>();
            Dictionary <Guid, MessageClassification>          dict        = new Dictionary <Guid, MessageClassification>();
            Dictionary <Guid, MessageClientInformation>       dict2       = new Dictionary <Guid, MessageClientInformation>();
            Dictionary <Guid, MessageEvent>                   dictionary2 = new Dictionary <Guid, MessageEvent>();
            Dictionary <Guid, MessageEventRule>               dictionary3 = new Dictionary <Guid, MessageEventRule>();
            Dictionary <Guid, MessageEventRuleClassification> dictionary4 = new Dictionary <Guid, MessageEventRuleClassification>();
            Dictionary <Guid, MessageEventSourceItem>         dictionary5 = new Dictionary <Guid, MessageEventSourceItem>();
            Dictionary <Guid, MessageRecipient>               dict3       = new Dictionary <Guid, MessageRecipient>();
            Dictionary <Guid, MessageRecipientStatus>         dictionary6 = new Dictionary <Guid, MessageRecipientStatus>();

            MessageTraceEntityBase[] array        = this.LoadConfigurables <MessageTrace>(MessageTraceDataSetSchema.MessagesTableProperty);
            MessageTrace             messageTrace = null;

            if (array != null && array.Length > 0)
            {
                messageTrace = (array.FirstOrDefault <MessageTraceEntityBase>() as MessageTrace);
            }
            if (messageTrace == null)
            {
                return(null);
            }
            MessageTraceEntityBase[] messageProperties              = this.LoadConfigurables <MessageProperty>(MessageTraceDataSetSchema.MessagePropertiesTableProperty);
            MessageTraceEntityBase[] msgActions                     = this.LoadConfigurables <MessageAction>(MessageTraceDataSetSchema.MessageActionTableProperty);
            MessageTraceEntityBase[] msgActionProperties            = this.LoadConfigurables <MessageActionProperty>(MessageTraceDataSetSchema.MessageActionPropertiesTableProperty);
            MessageTraceEntityBase[] msgClassifications             = this.LoadConfigurables <MessageClassification>(MessageTraceDataSetSchema.MessageClassificationsTableProperty);
            MessageTraceEntityBase[] msgClassificationProperties    = this.LoadConfigurables <MessageClassificationProperty>(MessageTraceDataSetSchema.MessageClassificationPropertiesTableProperty);
            MessageTraceEntityBase[] msgClientInformation           = this.LoadConfigurables <MessageClientInformation>(MessageTraceDataSetSchema.MessageClientInformationTableProperty);
            MessageTraceEntityBase[] msgClientInformationProperties = this.LoadConfigurables <MessageClientInformationProperty>(MessageTraceDataSetSchema.MessageClientInformationPropertiesTableProperty);
            MessageTraceEntityBase[] msgEvents                            = this.LoadConfigurables <MessageEvent>(MessageTraceDataSetSchema.MessageEventsTableProperty);
            MessageTraceEntityBase[] eventProperties                      = this.LoadConfigurables <MessageEventProperty>(MessageTraceDataSetSchema.MessageEventPropertiesTableProperty);
            MessageTraceEntityBase[] eventRules                           = this.LoadConfigurables <MessageEventRule>(MessageTraceDataSetSchema.MessageEventRulesTableProperty);
            MessageTraceEntityBase[] msgEventRuleProperties               = this.LoadConfigurables <MessageEventRuleProperty>(MessageTraceDataSetSchema.MessageEventRulePropertiesTableProperty);
            MessageTraceEntityBase[] msgEventRuleClassifications          = this.LoadConfigurables <MessageEventRuleClassification>(MessageTraceDataSetSchema.MessageEventRuleClassificationsTableProperty);
            MessageTraceEntityBase[] msgEventRuleClassificationProperties = this.LoadConfigurables <MessageEventRuleClassificationProperty>(MessageTraceDataSetSchema.MessageEventRuleClassificationPropertiesTableProperty);
            MessageTraceEntityBase[] eventSourceItems                     = this.LoadConfigurables <MessageEventSourceItem>(MessageTraceDataSetSchema.MessageEventSourceItemsTableProperty);
            MessageTraceEntityBase[] msgEventSourceItemProperties         = this.LoadConfigurables <MessageEventSourceItemProperty>(MessageTraceDataSetSchema.MessageEventSourceItemPropertiesTableProperty);
            MessageTraceEntityBase[] msgRecipients                        = this.LoadConfigurables <MessageRecipient>(MessageTraceDataSetSchema.MessageRecipientsTableProperty);
            MessageTraceEntityBase[] recipientProperties                  = this.LoadConfigurables <MessageRecipientProperty>(MessageTraceDataSetSchema.MessageRecipientPropertiesTableProperty);
            MessageTraceEntityBase[] msgRecipientStatuses                 = this.LoadConfigurables <MessageRecipientStatus>(MessageTraceDataSetSchema.MessageRecipientStatusTableProperty);
            MessageTraceEntityBase[] msgRecipientStatusProperties         = this.LoadConfigurables <MessageRecipientStatusProperty>(MessageTraceDataSetSchema.MessageRecipientStatusPropertiesTableProperty);
            MessageTraceDataSet.AddMessageProperties(messageProperties, messageTrace);
            MessageTraceDataSet.AddClassifications(msgClassifications, messageTrace, dict);
            MessageTraceDataSet.AddClassificationProperties(msgClassificationProperties, dict);
            MessageTraceDataSet.AddClientInformation(msgClientInformation, messageTrace, dict2);
            MessageTraceDataSet.AddClientInformationProperties(msgClientInformationProperties, dict2);
            MessageTraceDataSet.AddEvents(msgEvents, messageTrace, dictionary2);
            MessageTraceDataSet.AddEventPropertiesToEvents(eventProperties, dictionary2);
            MessageTraceDataSet.AddEventRules(eventRules, dictionary2, dictionary3);
            MessageTraceDataSet.AddEventRuleProperties(msgEventRuleProperties, dictionary3);
            MessageTraceDataSet.AddEventRuleClassifications(msgEventRuleClassifications, dictionary3, dictionary4);
            MessageTraceDataSet.AddEventRuleClassificationProperties(msgEventRuleClassificationProperties, dictionary4);
            MessageTraceDataSet.AddActions(msgActions, dictionary3, dictionary);
            MessageTraceDataSet.AddActionProperties(msgActionProperties, dictionary);
            MessageTraceDataSet.AddEventSourceItems(eventSourceItems, dictionary2, dictionary5);
            MessageTraceDataSet.AddEventSourceItemProperties(msgEventSourceItemProperties, dictionary5);
            MessageTraceDataSet.AddRecipients(msgRecipients, messageTrace, dict3);
            MessageTraceDataSet.AddRecipientPropertiesToRecipients(recipientProperties, dict3);
            MessageTraceDataSet.AddRecipientStatuses(msgRecipientStatuses, dictionary6, dictionary2);
            MessageTraceDataSet.AddRecipientStatusProperties(msgRecipientStatusProperties, dictionary6);
            return(messageTrace);
        }
コード例 #6
0
 public virtual void Visit(MessageTrace messageTrace)
 {
 }
コード例 #7
0
        private Dictionary <Guid, Dictionary <Guid, MessageRecipientStatus> > GetMessageEventRecipientStatusMap(MessageTrace message)
        {
            Dictionary <Guid, Dictionary <Guid, MessageRecipientStatus> > dictionary = new Dictionary <Guid, Dictionary <Guid, MessageRecipientStatus> >();

            foreach (MessageEvent messageEvent in message.Events)
            {
                Dictionary <Guid, MessageRecipientStatus> statusDict = new Dictionary <Guid, MessageRecipientStatus>();
                messageEvent.Statuses.ForEach(delegate(MessageRecipientStatus r)
                {
                    statusDict[r.RecipientId] = r;
                });
                dictionary[messageEvent.EventId] = statusDict;
            }
            return(dictionary);
        }