public WurmCharacters([NotNull] IWurmCharacterDirectories characterDirectories, [NotNull] IWurmConfigs wurmConfigs, [NotNull] IWurmServers wurmServers, [NotNull] IWurmServerHistory wurmServerHistory, [NotNull] ILogger logger, [NotNull] TaskManager taskManager) { this.characterDirectories = characterDirectories; this.wurmConfigs = wurmConfigs; this.wurmServers = wurmServers; this.wurmServerHistory = wurmServerHistory; this.logger = logger; this.taskManager = taskManager; if (characterDirectories == null) throw new ArgumentNullException("characterDirectories"); if (wurmConfigs == null) throw new ArgumentNullException("wurmConfigs"); if (wurmServers == null) throw new ArgumentNullException("wurmServers"); if (wurmServerHistory == null) throw new ArgumentNullException("wurmServerHistory"); if (logger == null) throw new ArgumentNullException("logger"); if (taskManager == null) throw new ArgumentNullException("taskManager"); var allChars = characterDirectories.GetAllCharacters(); foreach (var characterName in allChars) { try { Create(characterName); } catch (Exception exception) { logger.Log(LogLevel.Error, "Could not initialize character for name {0}", this, exception); } } }
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 WurmAutoruns( [NotNull] IWurmConfigs wurmConfigs, [NotNull] IWurmCharacterDirectories wurmCharacterDirectories, [NotNull] ILogger logger) { if (wurmConfigs == null) throw new ArgumentNullException("wurmConfigs"); if (wurmCharacterDirectories == null) throw new ArgumentNullException("wurmCharacterDirectories"); if (logger == null) throw new ArgumentNullException("logger"); this.wurmConfigs = wurmConfigs; this.wurmCharacterDirectories = wurmCharacterDirectories; this.logger = logger; }
public LogHistory( IWurmLogsHistory wurmLogsHistory, IWurmCharacterDirectories wurmCharacterDirectories, IWurmServerHistory wurmServerHistory, LogHistorySaved logHistorySaved, LogEntriesParser parser) { if (wurmLogsHistory == null) throw new ArgumentNullException("wurmLogsHistory"); if (wurmCharacterDirectories == null) throw new ArgumentNullException("wurmCharacterDirectories"); if (wurmServerHistory == null) throw new ArgumentNullException("wurmServerHistory"); if (logHistorySaved == null) throw new ArgumentNullException("logHistorySaved"); if (parser == null) throw new ArgumentNullException("parser"); this.wurmLogsHistory = wurmLogsHistory; this.wurmCharacterDirectories = wurmCharacterDirectories; this.wurmServerHistory = wurmServerHistory; this.logHistorySaved = logHistorySaved; this.parser = parser; }
public WurmAutoruns( [NotNull] IWurmConfigs wurmConfigs, [NotNull] IWurmCharacterDirectories wurmCharacterDirectories, [NotNull] IWurmApiLogger logger) { if (wurmConfigs == null) { throw new ArgumentNullException(nameof(wurmConfigs)); } if (wurmCharacterDirectories == null) { throw new ArgumentNullException(nameof(wurmCharacterDirectories)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } this.wurmConfigs = wurmConfigs; this.wurmCharacterDirectories = wurmCharacterDirectories; }
public WurmServers( IWurmLogsHistory wurmLogsHistory, IWurmLogsMonitorInternal wurmLogsMonitor, IWurmServerList wurmServerList, IHttpWebRequests httpWebRequests, string dataDirectory, IWurmCharacterDirectories wurmCharacterDirectories, IWurmServerHistory wurmServerHistory, ILogger logger) { if (wurmLogsHistory == null) throw new ArgumentNullException("wurmLogsHistory"); if (wurmLogsMonitor == null) throw new ArgumentNullException("wurmLogsMonitor"); if (wurmServerList == null) throw new ArgumentNullException("wurmServerList"); if (httpWebRequests == null) throw new ArgumentNullException("httpWebRequests"); if (dataDirectory == null) throw new ArgumentNullException("dataDirectory"); if (wurmCharacterDirectories == null) throw new ArgumentNullException("wurmCharacterDirectories"); if (wurmServerHistory == null) throw new ArgumentNullException("wurmServerHistory"); if (logger == null) throw new ArgumentNullException("logger"); liveLogsDataQueue = new LiveLogsDataQueue(wurmLogsMonitor); LiveLogs liveLogs = new LiveLogs(liveLogsDataQueue, wurmServerHistory); persistentCollectionsLibrary = new PersistentCollectionsLibrary(new FlatFilesPersistenceStrategy(dataDirectory), new PersObjErrorHandlingStrategy(logger)); var persistent = persistentCollectionsLibrary.DefaultCollection.GetObject<ServersData>("WurmServers"); LogHistorySaved logHistorySaved = new LogHistorySaved(persistent); LogHistory logHistory = new LogHistory(wurmLogsHistory, wurmCharacterDirectories, wurmServerHistory, logHistorySaved, new LogEntriesParser()); WebFeeds webFeeds = new WebFeeds(httpWebRequests, wurmServerList, logger); runner = new QueuedJobsSyncRunner<Job, JobResult>(new JobRunner(liveLogs, logHistory, webFeeds, persistentCollectionsLibrary), logger); wurmServerFactory = new WurmServerFactory(runner); var descriptions = wurmServerList.All; foreach (var serverDescription in descriptions) { RegisterServer(serverDescription); } }
public LogHistory( IWurmLogsHistory wurmLogsHistory, IWurmCharacterDirectories wurmCharacterDirectories, IWurmServerHistory wurmServerHistory, LogHistorySaved logHistorySaved, LogEntriesParser parser, [NotNull] IWurmApiLogger wurmApiLogger) { if (wurmLogsHistory == null) { throw new ArgumentNullException(nameof(wurmLogsHistory)); } if (wurmCharacterDirectories == null) { throw new ArgumentNullException(nameof(wurmCharacterDirectories)); } if (wurmServerHistory == null) { throw new ArgumentNullException(nameof(wurmServerHistory)); } if (logHistorySaved == null) { throw new ArgumentNullException(nameof(logHistorySaved)); } if (parser == null) { throw new ArgumentNullException(nameof(parser)); } if (wurmApiLogger == null) { throw new ArgumentNullException(nameof(wurmApiLogger)); } this.wurmLogsHistory = wurmLogsHistory; this.wurmCharacterDirectories = wurmCharacterDirectories; this.wurmServerHistory = wurmServerHistory; this.logHistorySaved = logHistorySaved; this.parser = parser; this.wurmApiLogger = wurmApiLogger; }
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 WurmServers( [NotNull] IWurmLogsHistory wurmLogsHistory, [NotNull] IWurmLogsMonitorInternal wurmLogsMonitor, [NotNull] IWurmServerList wurmServerList, [NotNull] IHttpWebRequests httpWebRequests, [NotNull] string dataDirectory, [NotNull] IWurmCharacterDirectories wurmCharacterDirectories, [NotNull] IWurmServerHistory wurmServerHistory, [NotNull] IWurmApiLogger logger, [NotNull] IWurmServerGroups wurmServerGroups, [NotNull] IWurmApiConfig wurmApiConfig) { if (wurmLogsHistory == null) { throw new ArgumentNullException(nameof(wurmLogsHistory)); } if (wurmLogsMonitor == null) { throw new ArgumentNullException(nameof(wurmLogsMonitor)); } if (wurmServerList == null) { throw new ArgumentNullException(nameof(wurmServerList)); } if (httpWebRequests == null) { throw new ArgumentNullException(nameof(httpWebRequests)); } if (dataDirectory == null) { throw new ArgumentNullException(nameof(dataDirectory)); } if (wurmCharacterDirectories == null) { throw new ArgumentNullException(nameof(wurmCharacterDirectories)); } if (wurmServerHistory == null) { throw new ArgumentNullException(nameof(wurmServerHistory)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } if (wurmServerGroups == null) { throw new ArgumentNullException(nameof(wurmServerGroups)); } if (wurmApiConfig == null) { throw new ArgumentNullException(nameof(wurmApiConfig)); } this.wurmServerGroups = wurmServerGroups; this.wurmApiConfig = wurmApiConfig; liveLogsDataQueue = new LiveLogsDataQueue(wurmLogsMonitor); LiveLogs liveLogs = new LiveLogs(liveLogsDataQueue, wurmServerHistory); IPersistenceStrategy persistenceStrategy = new FlatFilesPersistenceStrategy(dataDirectory); persistentCollectionsLibrary = new PersistentCollectionsLibrary(persistenceStrategy, new PersObjErrorHandlingStrategy(logger)); var persistent = persistentCollectionsLibrary.DefaultCollection.GetObject <ServersData>("WurmServers"); LogHistorySaved logHistorySaved = new LogHistorySaved(persistent); LogHistory logHistory = new LogHistory(wurmLogsHistory, wurmCharacterDirectories, wurmServerHistory, logHistorySaved, new LogEntriesParser(), logger); WebFeeds webFeeds = new WebFeeds(httpWebRequests, wurmServerList, logger); runner = new QueuedJobsSyncRunner <Job, JobResult>(new JobRunner(liveLogs, logHistory, webFeeds, persistentCollectionsLibrary), logger); wurmServerFactory = new WurmServerFactory(runner); var descriptions = wurmServerList.All; foreach (var serverDescription in descriptions) { RegisterServer(serverDescription); } }
public WurmCharacters([NotNull] IWurmCharacterDirectories characterDirectories, [NotNull] IWurmConfigs wurmConfigs, [NotNull] IWurmServers wurmServers, [NotNull] IWurmServerHistory wurmServerHistory, [NotNull] IWurmApiLogger logger, [NotNull] TaskManager taskManager, [NotNull] IWurmLogsMonitorInternal wurmLogsMonitor, [NotNull] IPublicEventInvoker publicEventInvoker, [NotNull] InternalEventAggregator internalEventAggregator, [NotNull] IWurmPaths wurmPaths, [NotNull] IWurmLogsHistory wurmLogsHistory, [NotNull] IWurmServerGroups serverGroups) { this.characterDirectories = characterDirectories; this.wurmConfigs = wurmConfigs; this.wurmServers = wurmServers; this.wurmServerHistory = wurmServerHistory; this.logger = logger; this.taskManager = taskManager; this.wurmLogsMonitor = wurmLogsMonitor; this.publicEventInvoker = publicEventInvoker; this.internalEventAggregator = internalEventAggregator; this.wurmPaths = wurmPaths; this.wurmLogsHistory = wurmLogsHistory; this.serverGroups = serverGroups; if (characterDirectories == null) { throw new ArgumentNullException(nameof(characterDirectories)); } if (wurmConfigs == null) { throw new ArgumentNullException(nameof(wurmConfigs)); } if (wurmServers == null) { throw new ArgumentNullException(nameof(wurmServers)); } if (wurmServerHistory == null) { throw new ArgumentNullException(nameof(wurmServerHistory)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } if (taskManager == null) { throw new ArgumentNullException(nameof(taskManager)); } if (wurmLogsMonitor == null) { throw new ArgumentNullException(nameof(wurmLogsMonitor)); } if (publicEventInvoker == null) { throw new ArgumentNullException(nameof(publicEventInvoker)); } if (internalEventAggregator == null) { throw new ArgumentNullException(nameof(internalEventAggregator)); } if (wurmPaths == null) { throw new ArgumentNullException(nameof(wurmPaths)); } if (wurmLogsHistory == null) { throw new ArgumentNullException(nameof(wurmLogsHistory)); } if (serverGroups == null) { throw new ArgumentNullException(nameof(serverGroups)); } var allChars = characterDirectories.GetAllCharacters(); foreach (var characterName in allChars) { try { Create(characterName); } catch (Exception exception) { logger.Log(LogLevel.Error, string.Format("Could not initialize character for name {0}", characterName), this, exception); } } }