コード例 #1
0
        internal static LogSearchCursor GetCursor(string server, ServerVersion version, string logFile, string messageId, ProxyAddressCollection senderProxyAddresses, DateTime startTime, DateTime endTime)
        {
            LogQuery        logQuery        = new LogQuery();
            LogAndCondition logAndCondition = new LogAndCondition();

            if (!string.IsNullOrEmpty(messageId))
            {
                LogCondition fieldStringComparison = TrackingSearch.GetFieldStringComparison(MessageTrackingField.MessageId, CsvFieldCache.NormalizeMessageID(messageId));
                logAndCondition.Conditions.Add(fieldStringComparison);
            }
            if (senderProxyAddresses != null)
            {
                LogOrCondition logOrCondition = new LogOrCondition();
                foreach (ProxyAddress proxyAddress in senderProxyAddresses)
                {
                    LogCondition fieldStringComparison2 = TrackingSearch.GetFieldStringComparison(MessageTrackingField.SenderAddress, proxyAddress.AddressString);
                    logOrCondition.Conditions.Add(fieldStringComparison2);
                }
                logAndCondition.Conditions.Add(logOrCondition);
            }
            logQuery.Filter    = logAndCondition;
            logQuery.Beginning = startTime;
            logQuery.End       = endTime;
            return(new LogSearchCursor(MessageTrackingSchema.MessageTrackingEvent, server, version, logFile, logQuery, null));
        }
コード例 #2
0
        protected override LogCondition GetCondition()
        {
            LogAndCondition logAndCondition = new LogAndCondition();

            if (this.eventId != null)
            {
                logAndCondition.Conditions.Add(this.GetFieldStringComparison(MessageTrackingField.EventId, this.eventId));
            }
            if (this.sender != null)
            {
                logAndCondition.Conditions.Add(this.GetSenderCondition());
            }
            if (this.recipients != null)
            {
                logAndCondition.Conditions.Add(this.GetRecipientsCondition());
            }
            if (this.messageId != null)
            {
                logAndCondition.Conditions.Add(this.GetFieldStringComparison(MessageTrackingField.MessageId, CsvFieldCache.NormalizeMessageID(this.messageId)));
            }
            if (this.internalMessageId != null)
            {
                logAndCondition.Conditions.Add(this.GetFieldStringComparison(MessageTrackingField.InternalMessageId, this.internalMessageId));
            }
            if (this.subject != null)
            {
                LogConditionField logConditionField = new LogConditionField();
                logConditionField.Name = base.Table.Fields[18].Name;
                LogConditionConstant logConditionConstant = new LogConditionConstant();
                logConditionConstant.Value = this.subject;
                LogStringContainsCondition logStringContainsCondition = new LogStringContainsCondition();
                logStringContainsCondition.Left       = logConditionField;
                logStringContainsCondition.Right      = logConditionConstant;
                logStringContainsCondition.IgnoreCase = true;
                logAndCondition.Conditions.Add(logStringContainsCondition);
            }
            if (this.reference != null)
            {
                logAndCondition.Conditions.Add(this.GetFieldForAnyCondition(MessageTrackingField.Reference, this.reference, "e"));
            }
            return(logAndCondition);
        }
コード例 #3
0
        // Token: 0x0600002A RID: 42 RVA: 0x000033DC File Offset: 0x000015DC
        private static bool CheckOptimization(LogCondition condition, List <IndexedSearch> searches, CsvField[] indexedFields, int optimizationCheckRecursionDepth)
        {
            if (optimizationCheckRecursionDepth > 2)
            {
                return(false);
            }
            LogAndCondition logAndCondition = condition as LogAndCondition;

            if (logAndCondition != null)
            {
                foreach (LogCondition condition2 in logAndCondition.Conditions)
                {
                    if (LogEvaluator.CheckOptimization(condition2, searches, indexedFields, optimizationCheckRecursionDepth + 1))
                    {
                        return(true);
                    }
                }
                return(false);
            }
            return(LogEvaluator.CheckFieldEqualsConstantCondition(condition, searches, indexedFields));
        }