public async Task <ExtendedEventsPosition> GetLastPosition( XEventsExportSettings.LogSourceSettings logSettings, string directoryName) { ExtendedEventsPosition position = null; if (LogPositions.TryGetValue(logSettings, out ConcurrentDictionary <string, ExtendedEventsPosition> settingPositions)) { settingPositions.TryGetValue(directoryName, out position); } return(position); }
private void SaveLogs( XEventsExportSettings.LogSourceSettings logSettings, ExtendedEventsPosition position, IList <XEventData> rowsData, FileInfo logFileInfo) { var newBufferItem = new LogBufferItem(); newBufferItem.LogPosition = position; foreach (var rowData in rowsData) { newBufferItem.LogRows.TryAdd(new EventKey() { Id = Guid.NewGuid(), File = logFileInfo }, rowData); } LogBuffer.TryAdd(new LogBufferItemKey(logSettings, DateTime.UtcNow, logFileInfo.FullName), newBufferItem); LogPositions.AddOrUpdate(logSettings, (settings) => { var newPositions = new ConcurrentDictionary <string, ExtendedEventsPosition>(); newPositions.AddOrUpdate(logFileInfo.Name, (fileName) => position, (fileName, oldPosition) => position); return(newPositions); }, (settings, logBufferItem) => { logBufferItem.AddOrUpdate(logFileInfo.Name, (fileName) => position, (fileName, oldPosition) => position); return(logBufferItem); }); }