public void Add(SaveScheduleInfo scheduleInfo) { if (!saveQueue.Contains(scheduleInfo)) { saveQueue.Enqueue(scheduleInfo); } }
public void SaveAll() { while (saveQueue.Count > 0) { SaveScheduleInfo scheduleInfo = saveQueue.Dequeue(); Save(scheduleInfo); } logger.LogInfo($"Saving done."); }
public override bool Equals(object obj) { if (obj is SaveScheduleInfo) { SaveScheduleInfo other = obj as SaveScheduleInfo; return(other.settings.Equals(settings) && other.path.Equals(path)); } else { return(false); } }
private void Save(SaveScheduleInfo scheduleInfo) { logger.LogDebug($"Saving \"{scheduleInfo.settings.GetType().FullName}\" to \"{scheduleInfo.path}\"..."); try { CreateBackup(scheduleInfo.path); scheduleInfo.settings.SaveToFile(scheduleInfo.path); if (scheduleInfo.settings is ModuleUserSettings) { (scheduleInfo.settings as ModuleUserSettings).OnSave(); } } catch (Exception ex) { logger.LogError($"An error occured while trying to save \"{scheduleInfo.settings}\" to \"{scheduleInfo.path}\":\r\n{ex.ToString()}"); } }
public async void Run(CancellationToken cancellationToken) { logger.LogInfo("Auto-saving service started."); while (!cancellationToken.IsCancellationRequested) { try { await Task.Delay(SAVE_FREQUENCY, cancellationToken); } catch (TaskCanceledException) { } while (saveQueue.Count > 0 && !cancellationToken.IsCancellationRequested) { SaveScheduleInfo scheduleInfo = saveQueue.Dequeue(); Save(scheduleInfo); } } logger.LogInfo("Auto-saving service stopped."); }