public void ProcessData(INetworkData ndata, Parameters param, ref IData[] supplData, ProcessInfo processInfo) { var remoteExe = param.GetParam <string>(InterpreterLabel).Value; var inFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); FolderFormat.Write(ndata, inFolder); var paramFile = Path.GetTempFileName(); param.ToFile(paramFile); var outFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); if (!TryGetCodeFile(param, out string codeFile)) { processInfo.ErrString = $"Code file '{codeFile}' was not found"; return; } ; var suppFiles = SupplDataTypes.Select(Utils.CreateTemporaryPath).ToArray(); var args = $"{codeFile} {paramFile} {inFolder} {outFolder} {string.Join(" ", suppFiles)}"; Debug.WriteLine($"executing > {remoteExe} {args}"); if (Utils.RunProcess(remoteExe, args, processInfo.Status, out string processInfoErrString) != 0) { processInfo.ErrString = processInfoErrString; return; } ; ndata.Clear(); FolderFormat.Read(ndata, outFolder, processInfo); supplData = Utils.ReadSupplementaryData(suppFiles, SupplDataTypes, processInfo); }
public void ProcessData(INetworkData ndata, Parameters param, ref IMatrixData[] supplTables, ref IDocumentData[] documents, ProcessInfo processInfo) { var remoteExe = param.GetParam <string>(InterpreterLabel).Value; //get parameters?? var inFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); //create outfolder Directory.CreateDirectory(inFolder); //create outfolder directory NetworkIO.Write(ndata, inFolder); //write graphs in folder var paramFile = Path.GetTempFileName(); //paramfile using (var f = new StreamWriter(paramFile)) { param.Convert(ParamUtils.ConvertBack); var serializer = new XmlSerializer(param.GetType()); serializer.Serialize(f, param); } var outFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); //create outfolder path Directory.CreateDirectory(outFolder); //create outfolder directory var codeFile = GetCodeFile(param); //get codefile var args = $"{codeFile} {paramFile} {inFolder} {outFolder}"; Debug.WriteLine($"executing > {remoteExe} {args}"); // var externalProcessInfo = new ProcessStartInfo //processinfo with args={code,para,in,out} { FileName = remoteExe, Arguments = args, UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, CreateNoWindow = true }; using (var process = Process.Start(externalProcessInfo)) { var output = process.StandardOutput; string line; while ((line = output.ReadLine()) != null) { Debug.WriteLine($"remote stdout > {line}"); } var error = process.StandardOutput; while ((line = error.ReadLine()) != null) { Debug.WriteLine($"remote error > {line}"); } process.WaitForExit(); } ndata.Clear(); NetworkIO.Read(ndata, outFolder, processInfo);//read in matrices from outfolder }