public static void UpdateConfigRequirements() { var postClient = new PostClient($"{ServerAddr}RecordConfig"); var responseJosn = postClient.Get(); ConfigRequirements = JsonConvert.DeserializeObject <Dictionary <string, string> >(responseJosn); File.WriteAllText($"{Directory.GetCurrentDirectory()}\\configs.json", JsonConvert.SerializeObject(ConfigRequirements, Formatting.Indented)); }
public static void UploadRecordFiles(Dictionary <string, string> recordConfigs, View.Progress progress, int startLine, int endLine) { var currentFileIndex = startLine / 16384; var offset = (startLine % 16384); var files = Directory.GetFiles(recordConfigs["Directory"], "*.HEX", SearchOption.AllDirectories); var currentLine = startLine; var fileList = new List <Dictionary <string, int> >(); var fileName = 0; while (currentLine < endLine) { fileList.Add(new Dictionary <string, int> { { "file", currentFileIndex }, { "offset", offset }, { "fileName", fileName } }); fileName++; offset = 0; currentLine += 16384; } _fileCount = (endLine - startLine) / 16384; _fileProcessed = 0; var fileNameList = new List <string>(); foreach (var uploadFile in fileList) { var file = new RecordFile { FileName = uploadFile["fileName"].ToString("D8"), Configs = recordConfigs }; fileNameList.Add(uploadFile["fileName"].ToString("D8")); using (var reader = new BinaryReader(new FileStream(files[uploadFile["fileName"]], FileMode.Open))) { file.FileDataBytes = new byte[(int)(reader.BaseStream.Length - uploadFile["offset"] * 16)]; reader.BaseStream.Seek(uploadFile["offset"] * 16, SeekOrigin.Begin); reader.Read(file.FileDataBytes, 0, (int)(reader.BaseStream.Length - uploadFile["offset"] * 16)); } var response = string.Empty; var tryTimes = 0; while (response != "255") { if (tryTimes > 10) { return; } response = new PostClient($"{ServerAddr}RecordFile").Post(JsonConvert.SerializeObject(file)); tryTimes++; } _fileProcessed++; progress.UpdateProgressBar((_fileProcessed / (_fileCount * 1.0)) * 100); } StartRecordProcess(recordConfigs, progress, fileNameList); }
private static void StartRecordProcess(Dictionary <string, string> recordConfigs, View.Progress progress, List <string> fileList) { var client = new PostClient($"{ServerAddr}Record"); var recordParams = new RecordParams { RecordConfigs = recordConfigs, FileList = fileList, RecordName = recordConfigs["RecordName"] }; var processId = Guid.Parse(client.Post(JsonConvert.SerializeObject(recordParams)).Replace("\"", string.Empty)); var stage = string.Empty; client.SetParams($"{{record}}:{processId}"); while (stage != RecordProcessStage.ProcessCompleted && stage != RecordProcessStage.Failed) { var fatchClient = new PostClient($"{ServerAddr}Record?record={processId}"); stage = fatchClient.Get().Replace("\"", string.Empty); progress.UPdateProgressStage(stage); Thread.Sleep(1000); } progress.FinishUpload(); }