public void Handle(NewMessageEvent @event) { _logger.Information( "New Message {MessageFile} Arrived -- Running Rules", @event.NewMessage); Task.Factory.StartNew( () => { Thread.Sleep(2000); _rulesRunner.Run(Rules.ToArray(), @event.NewMessage); }); }
public void Handle(PapercutClientReadyEvent @event) { _logger.Information("Attempting to Load Rules from {RuleFileName} on AppReady", RuleFileName); try { // accessing "Rules" forces the collection to be loaded if (Rules.Any()) { _logger.Information( "Loaded {RuleCount} from {RuleFileName}", Rules.Count, RuleFileName); } } catch (Exception ex) { _logger.Error(ex, "Error loading rules from file {RuleFileName}", RuleFileName); } // rules loaded/updated event this._messageBus.Publish(new RulesUpdatedEvent(this.Rules.ToArray())); Rules.CollectionChanged += RuleCollectionChanged; HookPropertyChangedForRules(Rules); // the backend service handles rules running if it's online if (!_coordinator.IsBackendServiceOnline) { _logger.Debug("Setting up Rule Dispatcher Observable"); // observe message watcher and run rules when a new message arrives Observable.FromEventPattern <NewMessageEventArgs>( e => _messageWatcher.NewMessage += e, e => _messageWatcher.NewMessage -= e, TaskPoolScheduler.Default) .DelaySubscription(TimeSpan.FromSeconds(1)) .Subscribe(e => _rulesRunner.Run(Rules.ToArray(), e.EventArgs.NewMessage)); } }