public string[] GetPathToPackDirectory() { var dirs = pathBuilder.GetPathToPackDirectory(); foreach (var dir in dirs) { Directory.CreateDirectory(dir); } return(dirs); }
public void RecoverAll() { var waitingReceivePacks = new List <ParsedReceivePack>(); foreach (var packDir in recoveryFilePathBuilder.GetPathToPackDirectory()) { foreach (var packFilePath in Directory.GetFiles(packDir)) { using (var fileReader = new StreamReader(packFilePath)) { var packFileData = fileReader.ReadToEnd(); waitingReceivePacks.Add(JsonConvert.DeserializeObject <ParsedReceivePack>(packFileData)); } } } foreach (var pack in waitingReceivePacks.OrderBy(p => p.Timestamp)) { // execute if the pack has been waiting for X amount of time if ((DateTime.Now - pack.Timestamp) >= failedPackWaitTimeBeforeExecution) { // re-parse result file and execute "post" hooks // if result file is no longer there then move on var failedPackResultFilePath = recoveryFilePathBuilder.GetPathToResultFile(pack.PackId, pack.RepositoryName, "receive-pack"); if (File.Exists(failedPackResultFilePath)) { using (var resultFileStream = File.OpenRead(failedPackResultFilePath)) { var failedPackResult = resultFileParser.ParseResult(resultFileStream); ProcessOnePack(pack, failedPackResult); } File.Delete(failedPackResultFilePath); } } } }