public LogsMonitorEngineManager( [NotNull] CharacterName characterName, [NotNull] CharacterLogsMonitorEngineFactory characterLogsMonitorEngineFactory, [NotNull] IPublicEventInvoker publicEventInvoker, [NotNull] IWurmApiLogger logger, [NotNull] IInternalEventInvoker internalEventInvoker) { if (characterName == null) { throw new ArgumentNullException(nameof(characterName)); } if (characterLogsMonitorEngineFactory == null) { throw new ArgumentNullException(nameof(characterLogsMonitorEngineFactory)); } if (publicEventInvoker == null) { throw new ArgumentNullException(nameof(publicEventInvoker)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } if (internalEventInvoker == null) { throw new ArgumentNullException(nameof(internalEventInvoker)); } this.characterName = characterName; this.publicEventInvoker = publicEventInvoker; this.logger = logger; this.internalEventInvoker = internalEventInvoker; engine = characterLogsMonitorEngineFactory.Create(characterName); }
internal WurmLogFiles(IWurmCharacterDirectories wurmCharacterDirectories, IWurmApiLogger logger, IWurmLogDefinitions wurmLogDefinitions, [NotNull] IInternalEventAggregator eventAggregator, [NotNull] IInternalEventInvoker internalEventInvoker, [NotNull] TaskManager taskManager, [NotNull] IWurmPaths wurmPaths) { if (wurmCharacterDirectories == null) { throw new ArgumentNullException(nameof(wurmCharacterDirectories)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } if (wurmLogDefinitions == null) { throw new ArgumentNullException(nameof(wurmLogDefinitions)); } if (eventAggregator == null) { throw new ArgumentNullException(nameof(eventAggregator)); } if (internalEventInvoker == null) { throw new ArgumentNullException(nameof(internalEventInvoker)); } if (taskManager == null) { throw new ArgumentNullException(nameof(taskManager)); } if (wurmPaths == null) { throw new ArgumentNullException(nameof(wurmPaths)); } this.wurmCharacterDirectories = wurmCharacterDirectories; this.logger = logger; this.wurmLogDefinitions = wurmLogDefinitions; this.eventAggregator = eventAggregator; this.internalEventInvoker = internalEventInvoker; this.taskManager = taskManager; this.wurmPaths = wurmPaths; try { Refresh(); } catch (Exception exception) { logger.Log(LogLevel.Error, "Error at initial WurmLogFiles refresh", this, exception); } eventAggregator.Subscribe(this); taskHandle = new TaskHandle(Refresh, "WurmLogFiles refresh"); taskManager.Add(taskHandle); taskHandle.Trigger(); }
public LogsMonitorEngineManager( [NotNull] CharacterName characterName, [NotNull] CharacterLogsMonitorEngineFactory characterLogsMonitorEngineFactory, [NotNull] IPublicEventInvoker publicEventInvoker, [NotNull] ILogger logger, [NotNull] IInternalEventInvoker internalEventInvoker) { if (characterName == null) throw new ArgumentNullException("characterName"); if (characterLogsMonitorEngineFactory == null) throw new ArgumentNullException("characterLogsMonitorEngineFactory"); if (publicEventInvoker == null) throw new ArgumentNullException("publicEventInvoker"); if (logger == null) throw new ArgumentNullException("logger"); if (internalEventInvoker == null) throw new ArgumentNullException("internalEventInvoker"); this.characterName = characterName; this.characterLogsMonitorEngineFactory = characterLogsMonitorEngineFactory; this.publicEventInvoker = publicEventInvoker; this.logger = logger; this.internalEventInvoker = internalEventInvoker; engine = characterLogsMonitorEngineFactory.Create(characterName); }
internal WurmCharacterLogFiles([NotNull] CharacterName characterName, [NotNull] string fullDirPathToCharacterLogsDir, [NotNull] IWurmApiLogger logger, [NotNull] LogFileInfoFactory logFileInfoFactory, [NotNull] IInternalEventInvoker internalEventInvoker, [NotNull] TaskManager taskManager) { if (characterName == null) { throw new ArgumentNullException(nameof(characterName)); } if (fullDirPathToCharacterLogsDir == null) { throw new ArgumentNullException(nameof(fullDirPathToCharacterLogsDir)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } if (logFileInfoFactory == null) { throw new ArgumentNullException(nameof(logFileInfoFactory)); } if (internalEventInvoker == null) { throw new ArgumentNullException(nameof(internalEventInvoker)); } if (taskManager == null) { throw new ArgumentNullException(nameof(taskManager)); } this.logger = logger; this.logFileInfoFactory = logFileInfoFactory; this.taskManager = taskManager; CharacterName = characterName; FullDirPathToCharacterLogsDir = fullDirPathToCharacterLogsDir; onFilesAddedOrRemoved = internalEventInvoker.Create(() => new CharacterLogFilesAddedOrRemoved(CharacterName)); try { Refresh(); } catch (Exception exception) { logger.Log(LogLevel.Error, "Error at initial WurmCharacterLogFiles refresh: " + CharacterName, this, exception); } directoryWatcher = new FileSystemWatcher(fullDirPathToCharacterLogsDir) { Filter = "*.txt", NotifyFilter = NotifyFilters.FileName }; directoryWatcher.Created += DirectoryWatcherOnChanged; directoryWatcher.Deleted += DirectoryWatcherOnChanged; directoryWatcher.Renamed += DirectoryWatcherOnChanged; directoryWatcher.Changed += DirectoryWatcherOnChanged; directoryWatcher.EnableRaisingEvents = true; taskHandle = new TaskHandle(Refresh, "WurmCharacterLogFiles refresh: " + CharacterName); taskManager.Add(taskHandle); taskHandle.Trigger(); }