public Subscriber(IInternalEventAggregator aggregator) { lock (locker) { aggregator.Subscribe(this); } }
public CharacterLogsMonitorEngineFactory( IWurmApiLogger logger, SingleFileMonitorFactory singleFileMonitorFactory, IWurmCharacterLogFiles wurmCharacterLogFiles, [NotNull] IInternalEventAggregator internalEventAggregator) { if (logger == null) { throw new ArgumentNullException(nameof(logger)); } if (singleFileMonitorFactory == null) { throw new ArgumentNullException(nameof(singleFileMonitorFactory)); } if (wurmCharacterLogFiles == null) { throw new ArgumentNullException(nameof(wurmCharacterLogFiles)); } if (internalEventAggregator == null) { throw new ArgumentNullException(nameof(internalEventAggregator)); } this.logger = logger; this.singleFileMonitorFactory = singleFileMonitorFactory; this.wurmCharacterLogFiles = wurmCharacterLogFiles; this.internalEventAggregator = internalEventAggregator; }
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 ServerHistoryProvider( [NotNull] CharacterName characterName, [NotNull] IPersistent <PersistentModel.ServerHistory> persistentData, [NotNull] IWurmLogsMonitorInternal logsMonitor, [NotNull] IWurmLogsHistory logsSearcher, [NotNull] IWurmServerList wurmServerList, [NotNull] IWurmApiLogger logger, [NotNull] IWurmCharacterLogFiles wurmCharacterLogFiles, [NotNull] IInternalEventAggregator eventAggregator) { if (characterName == null) { throw new ArgumentNullException(nameof(characterName)); } if (persistentData == null) { throw new ArgumentNullException(nameof(persistentData)); } if (logsMonitor == null) { throw new ArgumentNullException(nameof(logsMonitor)); } if (logsSearcher == null) { throw new ArgumentNullException(nameof(logsSearcher)); } if (wurmServerList == null) { throw new ArgumentNullException(nameof(wurmServerList)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } if (wurmCharacterLogFiles == null) { throw new ArgumentNullException(nameof(wurmCharacterLogFiles)); } if (eventAggregator == null) { throw new ArgumentNullException(nameof(eventAggregator)); } this.characterName = characterName; sortedServerHistory = new SortedServerHistory(persistentData); this.persistentData = persistentData; this.logsMonitor = logsMonitor; this.logsSearcher = logsSearcher; this.wurmServerList = wurmServerList; this.logger = logger; this.wurmCharacterLogFiles = wurmCharacterLogFiles; this.eventAggregator = eventAggregator; eventAggregator.Subscribe(this); logsMonitor.SubscribeInternal(characterName, LogType.Event, HandleEventLogEntries); }
internal WurmConfigs( [NotNull] IWurmConfigDirectories wurmConfigDirectories, [NotNull] IWurmApiLogger logger, [NotNull] IPublicEventInvoker publicEventInvoker, [NotNull] IInternalEventAggregator eventAggregator, [NotNull] TaskManager taskManager) { if (wurmConfigDirectories == null) { throw new ArgumentNullException(nameof(wurmConfigDirectories)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } if (publicEventInvoker == null) { throw new ArgumentNullException(nameof(publicEventInvoker)); } if (eventAggregator == null) { throw new ArgumentNullException(nameof(eventAggregator)); } if (taskManager == null) { throw new ArgumentNullException(nameof(taskManager)); } this.wurmConfigDirectories = wurmConfigDirectories; this.logger = logger; this.publicEventInvoker = publicEventInvoker; this.eventAggregator = eventAggregator; this.taskManager = taskManager; onAvailableConfigsChanged = publicEventInvoker.Create( () => AvailableConfigsChanged.SafeInvoke(this, EventArgs.Empty), WurmApiTuningParams.PublicEventMarshallerDelay); onAnyConfigChanged = publicEventInvoker.Create( () => AnyConfigChanged.SafeInvoke(this, EventArgs.Empty), WurmApiTuningParams.PublicEventMarshallerDelay); try { Refresh(); } catch (Exception exception) { logger.Log(LogLevel.Error, "Error at initial configs update", this, exception); } taskHandle = new TaskHandle(Refresh, "WurmConfigs update"); taskManager.Add(taskHandle); eventAggregator.Subscribe(this); taskHandle.Trigger(); }
public WurmConfigDirectories(IWurmPaths wurmPaths, [NotNull] IInternalEventAggregator eventAggregator, TaskManager taskManager, ILogger logger) : base(wurmPaths.ConfigsDirFullPath, taskManager, () => eventAggregator.Send(new ConfigDirectoriesChanged()), logger, ValidateDirectory) { if (eventAggregator == null) throw new ArgumentNullException("eventAggregator"); this.eventAggregator = eventAggregator; }
public WurmServerHistory( [NotNull] string dataDirectoryFullPath, [NotNull] IWurmLogsHistory wurmLogsHistory, IWurmServerList wurmServerList, IWurmApiLogger logger, IWurmLogsMonitorInternal wurmLogsMonitor, IWurmLogFiles wurmLogFiles, IInternalEventAggregator internalEventAggregator, [NotNull] IWurmServerGroups wurmServerGroups, [NotNull] IWurmApiConfig wurmApiConfig) { if (dataDirectoryFullPath == null) { throw new ArgumentNullException(nameof(dataDirectoryFullPath)); } if (wurmLogsHistory == null) { throw new ArgumentNullException(nameof(wurmLogsHistory)); } if (wurmServerGroups == null) { throw new ArgumentNullException(nameof(wurmServerGroups)); } if (wurmApiConfig == null) { throw new ArgumentNullException(nameof(wurmApiConfig)); } this.wurmLogsHistory = wurmLogsHistory; this.wurmServerGroups = wurmServerGroups; this.wurmApiConfig = wurmApiConfig; IPersistenceStrategy persistenceStrategy = new FlatFilesPersistenceStrategy(dataDirectoryFullPath); var persistentLibrary = new PersistentCollectionsLibrary(persistenceStrategy, new PersObjErrorHandlingStrategy(logger)); var collection = persistentLibrary.GetCollection("serverhistory"); var providerFactory = new ServerHistoryProviderFactory( collection, wurmLogsHistory, wurmServerList, logger, wurmLogsMonitor, wurmLogFiles, internalEventAggregator); jobExecutor = new JobExecutor(providerFactory, persistentLibrary); runner = new QueuedJobsSyncRunner <object, ServerName>(jobExecutor, logger); }
public WurmCharacterSkills([NotNull] IWurmCharacter character, [NotNull] IPublicEventInvoker publicEventInvoker, [NotNull] IWurmLogsMonitorInternal logsMonitor, [NotNull] IWurmLogsHistory logsHistory, [NotNull] IWurmApiLogger logger, IWurmPaths wurmPaths, [NotNull] IInternalEventAggregator internalEventAggregator) { if (character == null) { throw new ArgumentNullException(nameof(character)); } if (publicEventInvoker == null) { throw new ArgumentNullException(nameof(publicEventInvoker)); } if (logsMonitor == null) { throw new ArgumentNullException(nameof(logsMonitor)); } if (logsHistory == null) { throw new ArgumentNullException(nameof(logsHistory)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } if (internalEventAggregator == null) { throw new ArgumentNullException(nameof(internalEventAggregator)); } this.character = character; this.publicEventInvoker = publicEventInvoker; this.logsMonitor = logsMonitor; this.logsHistory = logsHistory; this.logger = logger; skillsMap = new SkillsMap(); skillDumps = new SkillDumpsManager(character, wurmPaths, logger); UpdateCurrentServer(); onSkillsChanged = publicEventInvoker.Create( InvokeOnSkillsChanged, WurmApiTuningParams.PublicEventMarshallerDelay); internalEventAggregator.Subscribe(this); logsMonitor.SubscribeInternal(character.Name, LogType.Skills, EventHandler); }
public InternalEventInvoker([NotNull] IInternalEventAggregator eventAggregator, [NotNull] IWurmApiLogger logger, [NotNull] IWurmApiEventMarshaller eventMarshaller) { if (eventAggregator == null) throw new ArgumentNullException(nameof(eventAggregator)); if (logger == null) throw new ArgumentNullException(nameof(logger)); if (eventMarshaller == null) throw new ArgumentNullException(nameof(eventMarshaller)); this.eventAggregator = eventAggregator; this.logger = logger; this.eventMarshaller = eventMarshaller; LoopDelayMillis = 100; schedulingTask = new Task(RunSchedule, TaskCreationOptions.LongRunning); schedulingTask.Start(); }
public CharacterLogsMonitorEngineFactory( ILogger logger, SingleFileMonitorFactory singleFileMonitorFactory, IWurmCharacterLogFiles wurmCharacterLogFiles, [NotNull] IInternalEventAggregator internalEventAggregator) { if (logger == null) throw new ArgumentNullException("logger"); if (singleFileMonitorFactory == null) throw new ArgumentNullException("singleFileMonitorFactory"); if (wurmCharacterLogFiles == null) throw new ArgumentNullException("wurmCharacterLogFiles"); if (internalEventAggregator == null) throw new ArgumentNullException("internalEventAggregator"); this.logger = logger; this.singleFileMonitorFactory = singleFileMonitorFactory; this.wurmCharacterLogFiles = wurmCharacterLogFiles; this.internalEventAggregator = internalEventAggregator; }
public WurmConfigDirectories(IWurmPaths wurmPaths, [NotNull] IInternalEventAggregator eventAggregator, TaskManager taskManager, IWurmApiLogger logger) : base( wurmPaths.ConfigsDirFullPath, taskManager, () => eventAggregator.Send(new ConfigDirectoriesChanged()), logger, ValidateDirectory, wurmPaths) { if (eventAggregator == null) { throw new ArgumentNullException(nameof(eventAggregator)); } this.eventAggregator = eventAggregator; }
public ServerHistoryProviderFactory( IPersistentCollection persistentCollection, IWurmLogsHistory wurmLogsHistory, IWurmServerList wurmServerList, IWurmApiLogger logger, IWurmLogsMonitorInternal wurmLogsMonitor, IWurmLogFiles wurmLogFiles, [NotNull] IInternalEventAggregator internalEventAggregator) { if (persistentCollection == null) { throw new ArgumentNullException(nameof(persistentCollection)); } if (wurmLogsHistory == null) { throw new ArgumentNullException(nameof(wurmLogsHistory)); } if (wurmServerList == null) { throw new ArgumentNullException(nameof(wurmServerList)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } if (wurmLogsMonitor == null) { throw new ArgumentNullException(nameof(wurmLogsMonitor)); } if (wurmLogFiles == null) { throw new ArgumentNullException(nameof(wurmLogFiles)); } if (internalEventAggregator == null) { throw new ArgumentNullException(nameof(internalEventAggregator)); } this.persistentCollection = persistentCollection; this.wurmLogsHistory = wurmLogsHistory; this.wurmServerList = wurmServerList; this.logger = logger; this.wurmLogsMonitor = wurmLogsMonitor; this.wurmLogFiles = wurmLogFiles; this.internalEventAggregator = internalEventAggregator; }
public CharacterLogsMonitorEngine( [NotNull] CharacterName characterName, [NotNull] IWurmApiLogger logger, [NotNull] SingleFileMonitorFactory singleFileMonitorFactory, [NotNull] IWurmCharacterLogFiles wurmCharacterLogFiles, [NotNull] IInternalEventAggregator internalEventAggregator) { if (characterName == null) { throw new ArgumentNullException(nameof(characterName)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } if (singleFileMonitorFactory == null) { throw new ArgumentNullException(nameof(singleFileMonitorFactory)); } if (wurmCharacterLogFiles == null) { throw new ArgumentNullException(nameof(wurmCharacterLogFiles)); } if (internalEventAggregator == null) { throw new ArgumentNullException(nameof(internalEventAggregator)); } this.characterName = characterName; this.logger = logger; this.singleFileMonitorFactory = singleFileMonitorFactory; this.wurmCharacterLogFiles = wurmCharacterLogFiles; lastRefresh = Time.Get.LocalNowOffset; internalEventAggregator.Subscribe(this); lock (locker) { RebuildAllMonitors(); } }
public WurmLogsMonitor([NotNull] IWurmLogFiles wurmLogFiles, [NotNull] IWurmApiLogger logger, [NotNull] IPublicEventInvoker publicEventInvoker, [NotNull] IInternalEventAggregator internalEventAggregator, [NotNull] IWurmCharacterDirectories wurmCharacterDirectories, [NotNull] InternalEventInvoker internalEventInvoker, [NotNull] TaskManager taskManager, [NotNull] LogFileStreamReaderFactory logFileStreamReaderFactory) { if (wurmLogFiles == null) { throw new ArgumentNullException(nameof(wurmLogFiles)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } if (publicEventInvoker == null) { throw new ArgumentNullException(nameof(publicEventInvoker)); } if (internalEventAggregator == null) { throw new ArgumentNullException(nameof(internalEventAggregator)); } if (wurmCharacterDirectories == null) { throw new ArgumentNullException(nameof(wurmCharacterDirectories)); } if (internalEventInvoker == null) { throw new ArgumentNullException(nameof(internalEventInvoker)); } if (taskManager == null) { throw new ArgumentNullException(nameof(taskManager)); } if (logFileStreamReaderFactory == null) { throw new ArgumentNullException(nameof(logFileStreamReaderFactory)); } this.wurmLogFiles = wurmLogFiles; this.logger = logger; this.publicEventInvoker = publicEventInvoker; this.internalEventAggregator = internalEventAggregator; this.wurmCharacterDirectories = wurmCharacterDirectories; this.internalEventInvoker = internalEventInvoker; this.taskManager = taskManager; this.logFileStreamReaderFactory = logFileStreamReaderFactory; try { Rebuild(); } catch (Exception exception) { logger.Log(LogLevel.Error, "Error at WurmLogsMonitor initial rebuild", this, exception); } internalEventAggregator.Subscribe(this); taskHandle = new TaskHandle(Rebuild, "WurmLogsMonitor rebuild"); taskManager.Add(taskHandle); updater = new Task(() => { while (true) { if (stop) { return; } Thread.Sleep(500); if (stop) { return; } try { foreach (var logsMonitorEngineManager in characterNameToEngineManagers.Values) { logsMonitorEngineManager.Update(allEventSubscriptionsTsafe); } } catch (Exception exception) { logger.Log(LogLevel.Error, "WurmLogsMonitor 'updater' task crashed", this, exception); } } }, TaskCreationOptions.LongRunning); updater.Start(); taskHandle.Trigger(); }