Exemplo n.º 1
0
        public ServerHistoryProvider(
            CharacterName characterName, IPersistent<PersistentModel.ServerHistory> persistentData,
            IWurmLogsMonitorInternal logsMonitor,
            IWurmLogsHistory logsSearcher,
            IWurmServerList wurmServerList,
            ILogger logger,
            IWurmCharacterLogFiles wurmCharacterLogFiles)
        {
            if (characterName == null) throw new ArgumentNullException("characterName");
            if (persistentData == null) throw new ArgumentNullException("persistentData");
            if (logsMonitor == null) throw new ArgumentNullException("logsMonitor");
            if (logsSearcher == null) throw new ArgumentNullException("logsSearcher");
            if (wurmServerList == null) throw new ArgumentNullException("wurmServerList");
            if (logger == null) throw new ArgumentNullException("logger");
            if (wurmCharacterLogFiles == null) throw new ArgumentNullException("wurmCharacterLogFiles");
            this.characterName = characterName;
            this.sortedServerHistory = new SortedServerHistory(persistentData);
            this.persistentData = persistentData;
            this.logsMonitor = logsMonitor;
            this.logsSearcher = logsSearcher;
            this.wurmServerList = wurmServerList;
            this.logger = logger;
            this.wurmCharacterLogFiles = wurmCharacterLogFiles;

            logsMonitor.SubscribeInternal(characterName, LogType.Event, HandleEventLogEntries);
        }
Exemplo n.º 2
0
 public WurmCharacterLogs(
     [NotNull] IWurmCharacter character,
     [NotNull] IWurmServerGroups serverGroups,
     [NotNull] IWurmLogsHistory logsHistory,
     [NotNull] IWurmServers wurmServers,
     [NotNull] IWurmApiLogger logger)
 {
     if (character == null)
     {
         throw new ArgumentNullException(nameof(character));
     }
     if (serverGroups == null)
     {
         throw new ArgumentNullException(nameof(serverGroups));
     }
     if (logsHistory == null)
     {
         throw new ArgumentNullException(nameof(logsHistory));
     }
     if (wurmServers == null)
     {
         throw new ArgumentNullException(nameof(wurmServers));
     }
     if (logger == null)
     {
         throw new ArgumentNullException(nameof(logger));
     }
     this.character   = character;
     this.logsHistory = logsHistory;
     this.logger      = logger;
 }
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
 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 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;
 }
Exemplo n.º 8
0
        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 ServerHistoryProviderFactory(
     IPersistentCollection persistentCollection,
     IWurmLogsHistory wurmLogsHistory,
     IWurmServerList wurmServerList,
     ILogger logger,
     IWurmLogsMonitorInternal wurmLogsMonitor,
     IWurmLogFiles wurmLogFiles)
 {
     if (persistentCollection == null) throw new ArgumentNullException("persistentCollection");
     if (wurmLogsHistory == null) throw new ArgumentNullException("wurmLogsHistory");
     if (wurmServerList == null) throw new ArgumentNullException("wurmServerList");
     if (logger == null) throw new ArgumentNullException("logger");
     if (wurmLogsMonitor == null) throw new ArgumentNullException("wurmLogsMonitor");
     if (wurmLogFiles == null) throw new ArgumentNullException("wurmLogFiles");
     this.persistentCollection = persistentCollection;
     this.wurmLogsHistory = wurmLogsHistory;
     this.wurmServerList = wurmServerList;
     this.logger = logger;
     this.wurmLogsMonitor = wurmLogsMonitor;
     this.wurmLogFiles = wurmLogFiles;
 }
Exemplo n.º 10
0
 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;
 }
Exemplo n.º 11
0
        public WurmServerHistory(
            string dataDirectoryFullPath,
            IWurmLogsHistory wurmLogsHistory,
            IWurmServerList wurmServerList,
            ILogger logger,
            IWurmLogsMonitorInternal wurmLogsMonitor,
            IWurmLogFiles wurmLogFiles)
        {
            var persistentLibrary =
                new PersistentCollectionsLibrary(new FlatFilesPersistenceStrategy(dataDirectoryFullPath),
                    new PersObjErrorHandlingStrategy(logger));
            var collection = persistentLibrary.GetCollection("serverhistory");

            var providerFactory = new ServerHistoryProviderFactory(
                collection,
                wurmLogsHistory,
                wurmServerList,
                logger,
                wurmLogsMonitor,
                wurmLogFiles);

            runner = new QueuedJobsSyncRunner<object, ServerName>(new JobExecutor(providerFactory, persistentLibrary), logger);
        }
Exemplo n.º 12
0
        public WurmCharacter([NotNull] CharacterName name, [NotNull] string playerDirectoryFullPath,
                             [NotNull] IWurmConfigs wurmConfigs, [NotNull] IWurmServers wurmServers,
                             [NotNull] IWurmServerHistory wurmServerHistory,
                             [NotNull] IWurmApiLogger logger,
                             [NotNull] TaskManager taskManager, [NotNull] IWurmLogsMonitorInternal logsMonitor,
                             [NotNull] IPublicEventInvoker publicEventInvoker, [NotNull] InternalEventAggregator internalEventAggregator,
                             [NotNull] IWurmLogsHistory logsHistory, [NotNull] IWurmPaths wurmPaths,
                             [NotNull] IWurmServerGroups wurmServerGroups)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }
            if (playerDirectoryFullPath == null)
            {
                throw new ArgumentNullException(nameof(playerDirectoryFullPath));
            }
            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 (logsMonitor == null)
            {
                throw new ArgumentNullException(nameof(logsMonitor));
            }
            if (publicEventInvoker == null)
            {
                throw new ArgumentNullException(nameof(publicEventInvoker));
            }
            if (internalEventAggregator == null)
            {
                throw new ArgumentNullException(nameof(internalEventAggregator));
            }
            if (logsHistory == null)
            {
                throw new ArgumentNullException(nameof(logsHistory));
            }
            if (wurmPaths == null)
            {
                throw new ArgumentNullException(nameof(wurmPaths));
            }
            if (wurmServerGroups == null)
            {
                throw new ArgumentNullException(nameof(wurmServerGroups));
            }

            this.wurmConfigs             = wurmConfigs;
            this.wurmServers             = wurmServers;
            this.wurmServerHistory       = wurmServerHistory;
            this.logger                  = logger;
            this.taskManager             = taskManager;
            this.logsMonitor             = logsMonitor;
            this.publicEventInvoker      = publicEventInvoker;
            this.internalEventAggregator = internalEventAggregator;
            this.logsHistory             = logsHistory;
            this.wurmServerGroups        = wurmServerGroups;

            internalEventAggregator.Subscribe(this);

            Name = name;
            configDefiningFileFullPath = Path.Combine(playerDirectoryFullPath, ConfigDefinerFileName);

            RefreshCurrentConfig();

            configUpdateTask = new TaskHandle(RefreshCurrentConfig, "Current config update for player " + Name);
            taskManager.Add(configUpdateTask);

            configFileWatcher = new FileSystemWatcher(playerDirectoryFullPath)
            {
                Filter = ConfigDefinerFileName
            };
            configFileWatcher.Changed            += ConfigFileWatcherOnChanged;
            configFileWatcher.Created            += ConfigFileWatcherOnChanged;
            configFileWatcher.Deleted            += ConfigFileWatcherOnChanged;
            configFileWatcher.Renamed            += ConfigFileWatcherOnChanged;
            configFileWatcher.EnableRaisingEvents = true;

            configUpdateTask.Trigger();

            try
            {
                wurmServerHistory.BeginTracking(Name);
            }
            catch (Exception exception)
            {
                logger.Log(LogLevel.Error,
                           string.Format("Failed to initiate tracking of server history for character {0}", name),
                           this,
                           exception);
            }

            skills = new WurmCharacterSkills(this,
                                             publicEventInvoker,
                                             logsMonitor,
                                             logsHistory,
                                             logger,
                                             wurmPaths,
                                             internalEventAggregator);
            Logs = new WurmCharacterLogs(this, wurmServerGroups, logsHistory, wurmServers, logger);
        }
Exemplo n.º 13
0
        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);
            }
        }
Exemplo n.º 14
0
        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);
                }
            }
        }