Exemple #1
0
        // Token: 0x060000B7 RID: 183 RVA: 0x00005EFC File Offset: 0x000040FC
        private void RefreshViewOfDirectory()
        {
            ExTraceGlobals.ServiceTracer.TraceDebug((long)this.GetHashCode(), "MsExchangeLogSearch LogMonitor ReadDirectory");
            Exception ex = null;

            FileInfo[] source = null;
            try
            {
                DirectoryInfo directoryInfo = new DirectoryInfo(this.path);
                source = directoryInfo.GetFiles(this.pattern, SearchOption.TopDirectoryOnly);
            }
            catch (UnauthorizedAccessException ex2)
            {
                ex = ex2;
            }
            catch (SecurityException ex3)
            {
                ex = ex3;
            }
            catch (IOException ex4)
            {
                ex = ex4;
            }
            catch (ArgumentException ex5)
            {
                ex = ex5;
            }
            if (ex != null)
            {
                ExTraceGlobals.ServiceTracer.TraceDebug <string, string>((long)this.GetHashCode(), "Could not open directory {0}, files will not be refreshed, exception: {1}", this.path, ex.ToString());
                return;
            }
            IOrderedEnumerable <FileInfo> source2 = from fileInfo in source
                                                    orderby fileInfo.CreationTimeUtc descending
                                                    select fileInfo;
            ulong indexSizeLimit           = LogSearchIndexingParameters.GetIndexLimit(this.prefix);
            ulong accumulatedIndexSize     = 0UL;
            IEnumerable <FileInfo> source3 = source2.TakeWhile((FileInfo fileInfo) => this.IsIndexUnderLimit(fileInfo, indexSizeLimit, ref accumulatedIndexSize));
            Dictionary <string, List <FileInfo> > dictionary = new Dictionary <string, List <FileInfo> >();

            foreach (FileInfo fileInfo2 in source3.Reverse <FileInfo>())
            {
                if (fileInfo2.Exists)
                {
                    string          fullPrefix = LogMonitor.GetFullPrefix(fileInfo2.FullName);
                    List <FileInfo> list;
                    if (!dictionary.TryGetValue(fullPrefix, out list))
                    {
                        dictionary[fullPrefix] = new List <FileInfo>();
                    }
                    dictionary[fullPrefix].Add(fileInfo2);
                }
            }
            this.ProcessNewFiles(dictionary);
            this.RetireUnusedFiles(dictionary);
        }
Exemple #2
0
        // Token: 0x060000C1 RID: 193 RVA: 0x000067B4 File Offset: 0x000049B4
        private double GetIndexPercentage(FileInfo fileInfo)
        {
            string fullPrefix = LogMonitor.GetFullPrefix(fileInfo.FullName);
            double result;

            if (this.indexPercentageByPrefix != null && this.indexPercentageByPrefix.TryGetValue(fullPrefix, out result))
            {
                return(result);
            }
            return(LogSearchIndexingParameters.GetDefaultIndexPercentage(this.prefix));
        }
 // Token: 0x060000FF RID: 255 RVA: 0x00007850 File Offset: 0x00005A50
 internal static ulong GetIndexLimit(string prefix)
 {
     if (LogSearchIndexingParameters.MessageTrackingIndexPercentageByPrefix.ContainsKey(prefix))
     {
         if (0UL == LogSearchIndexingParameters.messageTrackingIndexLimit)
         {
             ulong indexMemoryLimit = LogSearchIndexingParameters.GetIndexMemoryLimit();
             LogSearchIndexingParameters.messageTrackingIndexLimit = Math.Max(10485760UL, indexMemoryLimit);
         }
         return(LogSearchIndexingParameters.messageTrackingIndexLimit);
     }
     return(ulong.MaxValue);
 }