/// <summary> /// Serialize object to JSON and write/overwrite file /// </summary> /// <param name="accountMinerTypeExtraParamsList"></param> public void WriteJsonToFile(ObservableCollection <AccountMinerTypeExtraParams> accountMinerTypeExtraParamsList) { // Iterate through MinerBaseTypes and insert any missing miners to the list of // extra params foreach (MinerBaseType minerBaseType in Enum.GetValues(typeof(MinerBaseType))) { if (accountMinerTypeExtraParamsList.Any(x => x.MinerBaseTypeString == minerBaseType.ToString()) == false && minerBaseType != MinerBaseType.UNDEFINED) { AccountMinerTypeExtraParams accountMinerTypeExtraParams = new AccountMinerTypeExtraParams(); accountMinerTypeExtraParams.ExtraParams = ""; accountMinerTypeExtraParams.MinerBaseTypeString = minerBaseType.ToString(); accountMinerTypeExtraParamsList.Add(accountMinerTypeExtraParams); } } string filePath = Path.Combine(FileConstants.ConfigFilePath(), FileNameConstants.MinerTypeExtraParamsFileName); try { // serialize JSON directly to a file using (StreamWriter file = File.CreateText(filePath)) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(file, accountMinerTypeExtraParamsList); } } catch (Exception e) { throw new ApplicationException(string.Format("Error writing file {0}", filePath), e); } }
/// <summary> /// Starts the miner process /// </summary> /// <returns></returns> protected virtual BPMProcess StartProcess() { var process = new BPMProcess(); IsMining = true; FormatPerMinerCoinCombo(); ObservableCollection <AccountMinerTypeExtraParams> AccountMinerTypeExtraParamsList = (ObservableCollection <AccountMinerTypeExtraParams>)Application.Current.Properties["AccountMinerTypeExtraParamsList"]; AccountMinerTypeExtraParams accountMinerTypeExtraParams = AccountMinerTypeExtraParamsList.First(x => x.MinerBaseType == MinerBaseType); if (accountMinerTypeExtraParams != null && accountMinerTypeExtraParams.ExtraParams != String.Empty) { // Add Extra Params MinerArguments = String.Format("{0} {1}", MinerArguments, accountMinerTypeExtraParams.ExtraParams); } process.Start(MinerWorkingDirectory, MinerArguments, MinerFileName, Hardware == HardwareType.AMD, MinerBaseType); process.MinerProcess.Exited += MinerExited; return(process); }
/// <summary> /// Initializes a new AccountMinerTypeExtraParams object (only called when one doesn't exist or cannot be read). /// </summary> /// <param name="accountMinerTypeExtraParams"></param> /// <returns></returns> private ObservableCollection <AccountMinerTypeExtraParams> InitEmptyMinerTypeExtraParams() { // Create new empty list of miner type extra params ObservableCollection <AccountMinerTypeExtraParams> accountMinerTypeExtraParamsList = new ObservableCollection <AccountMinerTypeExtraParams>(); // Set default values foreach (MinerBaseType minerBaseType in Enum.GetValues(typeof(MinerBaseType))) { // Don't add settings for Undefined if (minerBaseType != MinerBaseType.UNDEFINED) { AccountMinerTypeExtraParams accountMinerTypeExtraParams = new AccountMinerTypeExtraParams(); accountMinerTypeExtraParams.MinerBaseTypeString = minerBaseType.ToString(); accountMinerTypeExtraParams.ExtraParams = ""; accountMinerTypeExtraParamsList.Add(accountMinerTypeExtraParams); } } // Write defaults to disk WriteJsonToFile(accountMinerTypeExtraParamsList); return(accountMinerTypeExtraParamsList); }