public async Task StopAsync() { await Task.WhenAll( BadFilterReportModel.StopAsync(), BackgroundEvent.StopAsync(), FiltersEvent.StopAsync()); }
public void Background(Token keyword, Token name) { var scenario = new Scenario(name.Content, file, currentFeature, keyword.LineInFile.Line); currentScenario = scenario; events.Enqueue(new BackgroundEvent(currentScenario, e => BackgroundEvent.Invoke(this, new EventArgs <Scenario>(scenario)))); }
private void StyleButton_Click(object sender, RoutedEventArgs e) { if (!(e.Source is Button srcButton)) { return; } var name = srcButton.Name; if (name == "ChangeBg") { BackgroundEvent.Restart(); return; } if (name == "ThemeBtn") { var res = MessageBox.Show( "При смене темы могут возникнуть \"артефакты\".\nРекомендую перезапустить приложение.", "Внимание", MessageBoxButton.OKCancel, MessageBoxImage.Warning); if (Settings.Program.Configure.Theme == Themes.Dark) { if (res == MessageBoxResult.OK) { ThemeChange(Themes.Light); } } else { if (res == MessageBoxResult.OK) { ThemeChange(Themes.Dark); } } } }
public async Task <bool> SaveBeaconEventState(string pid, BeaconEventType enter) { LastEventState[pid] = new BackgroundEvent() { BeaconId = pid, EventTime = DateTimeOffset.Now, LastEvent = enter }; return(true); }
public void Run() { ServerEvents.Connected += GameDataEvent_Connected; ServerEvents.Disconnected += GameDataEvent_Disconnected; GameView.Run(); GameModel.Start(ServerEvents, FiltersEvent, $"{Settings.Program.Directories.Temp}/GameData.json", $"{Settings.Program.Directories.Temp}/NewsData.json"); BackgroundEvent.Start(); }
private bool IsValidEnterEvent(BackgroundEvent history, Beacon beacon, int outOfRangeDb) { if (history == null) { return(true); } if (!SuppressBurst) { return(history.LastEvent == BeaconEventType.Exit || !IsOutOfRange(outOfRangeDb, beacon) && history.EventTime.AddMilliseconds(AppSettings.BeaconExitTimeout) < DateTimeOffset.Now); } return(!IsOutOfRange(outOfRangeDb, beacon) && history.EventTime.AddMilliseconds(AppSettings.BeaconExitTimeout) < DateTimeOffset.Now); }
public void TestEventStateStorage() { string s = FileStorageHelper.BeaconEventStateToString("1", BeaconEventType.Enter, DateTimeOffset.Parse("2015-04-16T14:00:00.000+0000")); Assert.AreEqual("1,1,1429192800000", s); BackgroundEvent be = FileStorageHelper.BeaconEventStateFromString(s); Assert.AreEqual("1", be.BeaconId); Assert.AreEqual(DateTimeOffset.Parse("2015-04-16T14:00:00.000+0000"), be.EventTime); Assert.AreEqual(BeaconEventType.Enter, be.LastEvent); Assert.IsNull(FileStorageHelper.BeaconEventStateFromString("")); Assert.IsNull(FileStorageHelper.BeaconEventStateFromString(null)); }
/// <summary> /// Generates BeaconArgs from beacon events. /// For instance if a beacon is seen for the first time, BeaconArgs with enter type is generated. /// </summary> private async Task AddBeaconsToBeaconArgsAsync(int outOfRangeDb) { Logger.Trace("AddBeaconsToBeaconArgsAsync"); foreach (var beacon in Beacons) { BackgroundEvent history = await ServiceManager.StorageService.GetLastEventStateForBeacon(beacon.Pid); if (IsValidEnterEvent(history, beacon, outOfRangeDb)) { // No history for this beacon. Let's save it and add it to event args array for solving. AddBeaconArgs(beacon, BeaconEventType.Enter); await ServiceManager.StorageService.SaveBeaconEventState(beacon.Pid, BeaconEventType.Enter); } else if (history.LastEvent == BeaconEventType.Enter) { if (IsOutOfRange(outOfRangeDb, beacon)) { // Exit event AddBeaconArgs(beacon, BeaconEventType.Exit); await ServiceManager.StorageService.SaveBeaconEventState(beacon.Pid, BeaconEventType.Exit); } } } }
public static EventBase Parse(string s) { var parts = s.Split(Constants.Splitter.Comma); EventTypes etype; EventBase result; if (Enum.TryParse(parts[0], out etype)) { var path = ""; if (parts.Length > 3) { path = parts[3].Trim('\"'); } switch (etype) { case (EventTypes.Sprite): result = new SpriteEvent(path, (EventLayer)Enum.Parse(typeof(EventLayer), parts[1]), (Origin)Enum.Parse(typeof(Origin), parts[2]), float.Parse(parts[4], Constants.IO.CULTUREINFO), float.Parse(parts[5], Constants.IO.CULTUREINFO)); break; case (EventTypes.Animation): Looptypes lt; result = new AnimationEvent(path, int.Parse(parts[6]), int.Parse(parts[7]), (EventLayer)Enum.Parse(typeof(EventLayer), parts[1]), (Origin)Enum.Parse(typeof(Origin), parts[2]), float.Parse(parts[4], Constants.IO.CULTUREINFO), float.Parse(parts[5], Constants.IO.CULTUREINFO), Enum.TryParse(parts[8], out lt) ? lt : Looptypes.LoopForever); break; case (EventTypes.Sample): result = new SampleEvent(parts[3], int.Parse(parts[1]), int.Parse(parts[4]), (EventLayer)int.Parse(parts[2])); break; case (EventTypes.Background): result = new BackgroundEvent(int.Parse(parts[1]), parts[2].Trim('"'), parts.Length > 3 ? int.Parse(parts[3]) : 0, parts.Length > 4 ? int.Parse(parts[4]) : 0); break; case (EventTypes.Video): result = new VideoEvent(int.Parse(parts[1]), parts[2].Trim('"')); break; case (EventTypes.Break): result = new BreakEvent(int.Parse(parts[1]), int.Parse(parts[2])); break; case (EventTypes.Backgroundcolor): result = new BackgroundColorEvent(int.Parse(parts[1]), int.Parse(parts[2]), int.Parse(parts[3]), int.Parse(parts[4])); break; default: result = new UndefinedEvent(parts); break; } } else { result = new UndefinedEvent(parts); } return(result); //0,0,"JamesHa.jpg",0,0 //image //Video,4655,"Jmmxp.avi" //video //2,110843,118365 //break //3 //Backgroundcolor }