/// <inheritdoc /> public override void OnNext(long value) { while (_orderCache.TryDequeue(out var cachedOrder)) { UpdateObservers(cachedOrder); } foreach (var order in WatchList.Values.ToList()) { var candle = _dataProvider.ParentImplementation.GetCandles(order.Pair, 1)[0]; if (EvaluateFilledOrder(order, candle, Timer.CurrentTime.ToUnixTimeMilliseconds())) { Logger.LogInformation($"Order {order.OrderId} confirmed at {Timer.CurrentTime}"); // Write the filled trade to the logger LogOrder(order); UpdateObservers(order); } } // Clean up filled orders WatchList = WatchList .Where(keyPair => !keyPair.Value.Finalized) .ToDictionary(p => p.Key, p => p.Value); }
private void UpdateStatusBar(bool saved = false) { var message = string.Empty; if (!string.IsNullOrWhiteSpace(_watches.CurrentFileName)) { if (saved) { message = Path.GetFileName(_watches.CurrentFileName) + " saved."; } else { message = Path.GetFileName(_watches.CurrentFileName) + (_watches.Changes ? " *" : string.Empty); } } ErrorIconButton.Visible = _watches.Where(watch => !watch.IsSeparator).Any(watch => (watch.Address) >= watch.Domain.Size); MessageLabel.Text = message; }
public RAMValue GetRAMValue(string key) { switch (_watchMode) { case WatchMode.SingleThreaded: return(WatchList.Where(p => p.Key == key).SingleOrDefault()); case WatchMode.MultiThreaded_A: List <RAMValue> tmpList = ReadWatchList.Union(WriteWatchList).Union(FreezeWatchList).ToList(); return(tmpList.Where(p => p.Key == key).SingleOrDefault()); case WatchMode.MultiThreaded_N: return(null); case WatchMode.MultiThreaded_S: return(null); } return(null); }
private void UpdateStatusBar(bool saved = false) { var message = ""; if (!string.IsNullOrWhiteSpace(_watches.CurrentFileName)) { if (saved) { message = $"{Path.GetFileName(_watches.CurrentFileName)} saved."; } else { message = Path.GetFileName(_watches.CurrentFileName) + (_watches.Changes ? " *" : ""); } } ErrorIconButton.Visible = _watches.Where(watch => !watch.IsSeparator).Any(watch => !watch.IsValid); MessageLabel.Text = message; }
private void LoadWatchFile(FileInfo file, bool append, bool truncate = false) { if (file != null) { if (!truncate) { _currentFileName = file.FullName; } var watches = new WatchList(MemoryDomains, Emu.SystemId); watches.Load(file.FullName, append); Settings.RecentSearches.Add(watches.CurrentFileName); var watchList = watches.Where(x => !x.IsSeparator).ToList(); var addresses = watchList.Select(x => x.Address).ToList(); if (truncate) { SetRemovedMessage(addresses.Count); _searches.RemoveSmallWatchRange(watchList); } else { _searches.AddRange(addresses, append); MessageLabel.Text = $"{file.Name} loaded"; } UpdateList(); Settings.RecentSearches.Add(file.FullName); if (!append && !truncate) { _searches.ClearHistory(); } ToggleSearchDependentToolBarItems(); } }
public void LoadWatchFile(FileInfo file, bool append, bool truncate = false) { if (file != null) { if (!truncate) { _currentFileName = file.FullName; } var watches = new WatchList(_settings.Domain); watches.Load(file.FullName, append); var watchList = watches.Where(x => !x.IsSeparator); var addresses = watchList.Select(x => x.Address ?? 0).ToList(); if (truncate) { SetRemovedMessage(addresses.Count); _searches.RemoveSmallWatchRange(watchList); } else { _searches.AddRange(addresses, append); MessageLabel.Text = file.Name + " loaded"; } UpdateList(); Global.Config.RecentSearches.Add(file.FullName); if (!append && !truncate) { _searches.ClearHistory(); } ToggleSearchDependentToolBarItems(); } }
/// <summary> /// Get RAM Value Type using address /// </summary> /// <param name="address"></param> /// <returns></returns> public RAMValue GetRAMValue(UIntPtr address) => WatchList.Where(p => p.Address == address).ToList().FirstOrDefault();