private void FeeRateStatStore_NewStat(object?sender, CoinJoinFeeRateStat feeRateStat) { var filePath = Parameters.CoinJoinFeeRateStatStoreFilePath; try { File.AppendAllLines(filePath, new[] { feeRateStat.ToLine() }); } catch (Exception ex) { Logger.LogError($"Could not write file {filePath}.", ex); } }
public static CoinJoinFeeRateStatStore LoadFromFile(string filePath, WabiSabiConfig config, IRPCClient rpc) { var from = DateTimeOffset.UtcNow - MaximumTimeToStore; var stats = !File.Exists(filePath) ? Enumerable.Empty <CoinJoinFeeRateStat>() : File.ReadAllLines(filePath) .Select(x => CoinJoinFeeRateStat.FromLine(x)) .Where(x => x.DateTimeOffset >= from); var store = new CoinJoinFeeRateStatStore(config, rpc, stats); return(store); }
private void Add(CoinJoinFeeRateStat feeRateStat) { CoinJoinFeeRateStats.Add(feeRateStat); DefaultAverages = TimeFrames.Select(t => new CoinJoinFeeRateAverage(t, GetAverage(t))).ToArray(); // Prune old items. DateTimeOffset removeBefore = DateTimeOffset.UtcNow - MaximumTimeToStore; while (CoinJoinFeeRateStats.Any() && CoinJoinFeeRateStats[0].DateTimeOffset < removeBefore) { CoinJoinFeeRateStats.RemoveAt(0); } }