// 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); }
// 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); }