private void DoLogProcessClose(MinerProcess minerProcess) { if (LogProcessClose == null) { return; } DateTime startDate = minerProcess.StartDate; DateTime endDate = DateTime.Now; string coinName = minerProcess.MinerConfiguration.CoinName; double priceAtStart = 0; string coinSymbol = String.Empty; //coin may not be in Coin API if (minerProcess.CoinInformation != null) { coinSymbol = minerProcess.CoinInformation.Symbol; priceAtStart = minerProcess.CoinInformation.Price; } double priceAtEnd = priceAtStart; //can't use Single here - coin info may be gone now and we crash CoinInformation coinInfo = null; if (coinInformation != null) //null if no internet connection { coinInfo = coinInformation.SingleOrDefault(c => c.Symbol.Equals(coinSymbol, StringComparison.OrdinalIgnoreCase)); } if (coinInfo != null) { priceAtEnd = coinInfo.Price; } //get a copy using ToList() so we can change the list in the event handler without //affecting relaunching processes List <DeviceDescriptor> deviceDescriptors = minerProcess.MinerConfiguration.DeviceDescriptors.ToList(); LogProcessCloseArgs args = new LogProcessCloseArgs { StartDate = startDate, EndDate = endDate, CoinName = coinName, CoinSymbol = coinSymbol, StartPrice = priceAtStart, EndPrice = priceAtEnd, DeviceDescriptors = deviceDescriptors, MinerConfiguration = minerProcess.MinerConfiguration, AcceptedShares = minerProcess.AcceptedShares }; LogProcessClose(this, args); }
private void logProcessClose(DateTime startDate, DateTime endDate, string coinName, string coinSymbol, double priceAtStart, double priceAtEnd, List <int> deviceIndexes) { if (this.LogProcessClose != null) { LogProcessCloseArgs args = new LogProcessCloseArgs(); args.StartDate = startDate; args.EndDate = endDate; args.CoinName = coinName; args.CoinSymbol = coinSymbol; args.StartPrice = priceAtStart; args.EndPrice = priceAtEnd; args.DeviceIndexes = deviceIndexes; this.LogProcessClose(this, args); } }
private void CheckAndAddStratumDeviceIndex(LogProcessCloseArgs ea) { //check and include the index of the virtual stratum proxy "device" if (ea.MinerConfiguration.StratumProxy) { Device proxyDevice = devices.SingleOrDefault(d => d.Kind == DeviceKind.PXY); if (proxyDevice != null) ea.DeviceDescriptors.Add(proxyDevice); } }
private void LogProcessCloseToFile(LogProcessCloseArgs ea) { const string logFileName = "MiningLog.json"; //log an anonymous type so MinerConfiguration is ommitted LogObjectToFile( new { StartDate = ea.StartDate, EndDate = ea.EndDate, CoinName = ea.CoinName, CoinSymbol = ea.CoinSymbol, StartPrice = ea.StartPrice, EndPrice = ea.EndPrice, AcceptedShares = ea.AcceptedShares, DeviceDescriptors = ea.DeviceDescriptors }, logFileName); }
private void LogProcessClose(object sender, LogProcessCloseArgs ea) { CheckAndAddStratumDeviceIndex(ea); logProcessCloseArgsBindingSource.Position = logProcessCloseArgsBindingSource.Add(ea); while (logProcessCloseArgsBindingSource.Count > MaxHistoryOnScreen) logProcessCloseArgsBindingSource.RemoveAt(0); LogProcessCloseToFile(ea); }
private void LogProcessClose(object sender, LogProcessCloseArgs ea) { //remove then add so BindingList position is on latest entry while (LogCloseEntries.Count > MaxLogEntriesOnScreen) LogCloseEntries.RemoveAt(0); LogCloseEntries.Add(ea); LogProcessCloseToFile(ea); }
private void logProcessClose(MinerProcess minerProcess) { if (this.LogProcessClose == null) return; DateTime startDate = minerProcess.StartDate; DateTime endDate = DateTime.Now; string coinName = minerProcess.MinerConfiguration.CoinName; double priceAtStart = 0; string coinSymbol = String.Empty; //coin may not be in Coin API if (minerProcess.CoinInformation != null) { coinSymbol = minerProcess.CoinInformation.Symbol; priceAtStart = minerProcess.CoinInformation.Price; } double priceAtEnd = priceAtStart; //can't use Single here - coin info may be gone now and we crash CoinInformation coinInfo = null; if (coinInformation != null) //null if no internet connection coinInfo = coinInformation.SingleOrDefault(c => c.Symbol.Equals(coinSymbol, StringComparison.OrdinalIgnoreCase)); if (coinInfo != null) priceAtEnd = coinInfo.Price; //get a copy using ToList() so we can change the list in the event handler without //affecting relaunching processes List<DeviceDescriptor> deviceDescriptors = minerProcess.MinerConfiguration.DeviceDescriptors.ToList(); LogProcessCloseArgs args = new LogProcessCloseArgs(); args.StartDate = startDate; args.EndDate = endDate; args.CoinName = coinName; args.CoinSymbol = coinSymbol; args.StartPrice = priceAtStart; args.EndPrice = priceAtEnd; args.DeviceDescriptors = deviceDescriptors; args.MinerConfiguration = minerProcess.MinerConfiguration; args.AcceptedShares = minerProcess.AcceptedShares; this.LogProcessClose(this, args); }
private void logProcessClose(DateTime startDate, DateTime endDate, string coinName, string coinSymbol, double priceAtStart, double priceAtEnd, List<int> deviceIndexes, MinerConfiguration minerConfiguration) { if (this.LogProcessClose != null) { LogProcessCloseArgs args = new LogProcessCloseArgs(); args.StartDate = startDate; args.EndDate = endDate; args.CoinName = coinName; args.CoinSymbol = coinSymbol; args.StartPrice = priceAtStart; args.EndPrice = priceAtEnd; args.DeviceIndexes = deviceIndexes; args.MinerConfiguration = minerConfiguration; this.LogProcessClose(this, args); } }
private void CheckAndAddStratumDeviceIndex(LogProcessCloseArgs ea) { //check and include the index of the virtual stratum proxy "device" if (ea.MinerConfiguration.StratumProxy) { Device lastDevice = devices.LastOrDefault(); if ((lastDevice != null) && (lastDevice.Kind == DeviceKind.PXY)) ea.DeviceIndexes.Add(lastDevice.DeviceIndex); } }
private void LogProcessCloseToFile(LogProcessCloseArgs ea) { const string logFileName = "MiningLog.json"; LogObjectToFile(ea, logFileName); }
private void LogProcessClose(object sender, LogProcessCloseArgs ea) { const string logFileName = "MiningLog.json"; string logFilePath = Path.Combine(AppDataPath(), logFileName); JavaScriptSerializer serializer = new JavaScriptSerializer(); string jsonData = serializer.Serialize(ea); File.AppendAllText(logFilePath, jsonData + Environment.NewLine); logProcessCloseArgsBindingSource.Position = logProcessCloseArgsBindingSource.Add(ea); while (logProcessCloseArgsBindingSource.Count > 1000) logProcessCloseArgsBindingSource.RemoveAt(0); }
private void CalculateAcceptedSharesForProcess(LogProcessCloseArgs ea) { int acceptedShares = 0; foreach (int deviceIndex in ea.DeviceIndexes) { //key won't be there if process is stopped before it starts accepting shares if (lastAcceptedShares.ContainsKey(deviceIndex)) acceptedShares += lastAcceptedShares[deviceIndex]; } ea.AcceptedShares = acceptedShares; }
private void LogProcessClose(object sender, LogProcessCloseArgs ea) { CheckAndAddStratumDeviceIndex(ea); CalculateAcceptedSharesForProcess(ea); logProcessCloseArgsBindingSource.Position = logProcessCloseArgsBindingSource.Add(ea); while (logProcessCloseArgsBindingSource.Count > 1000) logProcessCloseArgsBindingSource.RemoveAt(0); LogProcessCloseToFile(ea); }