public void Setup() { eventAggregator = new InternalEventAggregator(); receiver = new Subscriber <TestMessage>(eventAggregator); //receiver = new MessageReceiver(eventAggregator); invoker = new InternalEventInvoker(eventAggregator, logger, new ThreadPoolMarshaller(logger)) { LoopDelayMillis = 1 }; }
public void Setup() { eventAggregator = new InternalEventAggregator(); receiver = new Subscriber<TestMessage>(eventAggregator); //receiver = new MessageReceiver(eventAggregator); invoker = new InternalEventInvoker(eventAggregator, logger, new ThreadPoolMarshaller(logger)) { LoopDelayMillis = 1 }; }
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(); }
public InternalEventImpl([NotNull] InternalEventInvoker invoker) { if (invoker == null) throw new ArgumentNullException("invoker"); this.invoker = invoker; }
void ConstructSystems(string wurmApiDataDirectoryFullPath, IWurmClientInstallDirectory installDirectory, IHttpWebRequests httpWebRequests, IWurmApiLogger logger, IWurmApiEventMarshaller publicEventMarshaller, IWurmApiEventMarshaller internalEventMarshaller, WurmApiConfig wurmApiConfig) { IWurmApiConfig internalWurmApiConfig = wurmApiConfig.CreateCopy(); LogFileStreamReaderFactory logFileStreamReaderFactory = Wire(new LogFileStreamReaderFactory(internalWurmApiConfig)); Wire(installDirectory); Wire(httpWebRequests); if (logger == null) { logger = new WurmApiLoggerStub(); } PublicEventInvoker publicEventInvoker = Wire(new PublicEventInvoker(publicEventMarshaller, logger)); TaskManager taskManager = Wire(new TaskManager(logger)); InternalEventAggregator internalEventAggregator = Wire(new InternalEventAggregator()); InternalEventInvoker internalEventInvoker = Wire(new InternalEventInvoker(internalEventAggregator, logger, internalEventMarshaller)); WurmPaths paths = Wire(new WurmPaths(installDirectory, wurmApiConfig)); WurmServerGroups serverGroups = Wire(new WurmServerGroups(internalWurmApiConfig.ServerInfoMap)); WurmServerList serverList = Wire(new WurmServerList(internalWurmApiConfig.ServerInfoMap)); WurmLogDefinitions logDefinitions = Wire(new WurmLogDefinitions()); WurmConfigDirectories configDirectories = Wire(new WurmConfigDirectories(paths, internalEventAggregator, taskManager, logger)); WurmCharacterDirectories characterDirectories = Wire(new WurmCharacterDirectories(paths, internalEventAggregator, taskManager, logger)); WurmLogFiles logFiles = Wire(new WurmLogFiles(characterDirectories, logger, logDefinitions, internalEventAggregator, internalEventInvoker, taskManager, paths)); WurmLogsMonitor logsMonitor = Wire(new WurmLogsMonitor(logFiles, logger, publicEventInvoker, internalEventAggregator, characterDirectories, internalEventInvoker, taskManager, logFileStreamReaderFactory)); var heuristicsDataDirectory = Path.Combine(wurmApiDataDirectoryFullPath, "WurmLogsHistory"); if (internalWurmApiConfig.ClearAllCaches) { ClearDir(heuristicsDataDirectory, logger); } WurmLogsHistory logsHistory = Wire(new WurmLogsHistory(logFiles, logger, heuristicsDataDirectory, logFileStreamReaderFactory, wurmApiConfig)); WurmConfigs wurmConfigs = Wire(new WurmConfigs(configDirectories, logger, publicEventInvoker, internalEventAggregator, taskManager)); WurmAutoruns autoruns = Wire(new WurmAutoruns(wurmConfigs, characterDirectories, logger)); var wurmServerHistoryDataDirectory = Path.Combine(wurmApiDataDirectoryFullPath, "WurmServerHistory"); if (internalWurmApiConfig.ClearAllCaches) { ClearDir(wurmServerHistoryDataDirectory, logger); } WurmServerHistory wurmServerHistory = Wire(new WurmServerHistory(wurmServerHistoryDataDirectory, logsHistory, serverList, logger, logsMonitor, logFiles, internalEventAggregator, serverGroups, wurmApiConfig)); var wurmServersDataDirectory = Path.Combine(wurmApiDataDirectoryFullPath, "WurmServers"); if (internalWurmApiConfig.ClearAllCaches) { ClearDir(wurmServersDataDirectory, logger); } WurmServers wurmServers = Wire(new WurmServers(logsHistory, logsMonitor, serverList, httpWebRequests, wurmServersDataDirectory, characterDirectories, wurmServerHistory, logger, serverGroups, wurmApiConfig)); WurmCharacters characters = Wire(new WurmCharacters(characterDirectories, wurmConfigs, wurmServers, wurmServerHistory, logger, taskManager, logsMonitor, publicEventInvoker, internalEventAggregator, paths, logsHistory, serverGroups)); HttpWebRequests = httpWebRequests; Autoruns = autoruns; Characters = characters; Configs = wurmConfigs; LogDefinitions = logDefinitions; LogsHistory = logsHistory; LogsMonitor = logsMonitor; Servers = wurmServers; WurmLogFiles = logFiles; WurmServerHistory = wurmServerHistory; WurmCharacterDirectories = characterDirectories; WurmConfigDirectories = configDirectories; InternalEventAggregator = internalEventAggregator; Paths = paths; ServerGroups = serverGroups; Logger = logger; ServersList = serverList; }