Create() private method

Creates a type as a specified plugin.
private Create ( Type type, DarkRift.Server.PluginBaseLoadData loadData, DarkRift.Server.PluginLoadData backupLoadData = null ) : T
type Type The type to load.
loadData DarkRift.Server.PluginBaseLoadData The data to load into the plugin.
backupLoadData DarkRift.Server.PluginLoadData The backup load data to try for backwards compatability.
return T
Exemplo n.º 1
0
        /// <summary>
        ///     Load the plugin given.
        /// </summary>
        /// <param name="name">The name of the plugin instance.</param>
        /// <param name="type">The plugin type to load.</param>
        /// <param name="pluginLoadData">The data for this plugin.</param>
        /// <param name="backupLoadData">The data for this plugin if the first fails.</param>
        /// <param name="createResourceDirectory">Whether to create a resource directory or not.</param>
        protected virtual T LoadPlugin(string name, Type type, PluginBaseLoadData pluginLoadData, PluginLoadData backupLoadData, bool createResourceDirectory)
        {
            //Ensure the resource directory is present
            if (createResourceDirectory)
            {
                dataManager.CreateResourceDirectory(type.Name);
            }

            T plugin = pluginFactory.Create <T>(type, pluginLoadData);

            plugins.Add(name, plugin);

            return(plugin);
        }
Exemplo n.º 2
0
        /// <summary>
        ///     Loads the plugins found by the plugin factory.
        /// </summary>
        /// <param name="settings">The settings to load plugins with.</param>
        internal void LoadPlugins(ServerSpawnData.ServerRegistrySettings settings)
        {
            if (settings.ServerRegistryConnector?.Type != null)
            {
                ServerRegistryConnectorLoadData loadData = new ServerRegistryConnectorLoadData(
                    settings.ServerRegistryConnector.Type,
                    server,
                    settings.ServerRegistryConnector.Settings ?? new NameValueCollection(),
                    logManager.GetLoggerFor(settings.ServerRegistryConnector.Type),
                    metricsManager.GetMetricsCollectorFor(settings.ServerRegistryConnector.Type)
                    );

                ServerRegistryConnector = pluginFactory.Create <ServerRegistryConnector>(settings.ServerRegistryConnector.Type, loadData, null);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        ///     Loads the writers found by the plugin factory.
        /// </summary>
        /// <param name="settings">The settings to load writers from.</param>
        /// <param name="pluginFactory">The server's plugin factory.</param>
        internal void LoadWriters(ServerSpawnData.LoggingSettings settings, PluginFactory pluginFactory)
        {
            if (logWriters != null)
            {
                throw new InvalidOperationException("Cannot load writers if writers are already present. This suggests that writers have already been loaded into the server.\n\nThis is likely an internal DR issue, please consider creating an issue here: https://github.com/DarkRiftNetworking/DarkRift/issues");
            }

            List <LogWriter> traceWriters   = new List <LogWriter>();
            List <LogWriter> infoWriters    = new List <LogWriter>();
            List <LogWriter> warningWriters = new List <LogWriter>();
            List <LogWriter> errorWriters   = new List <LogWriter>();
            List <LogWriter> fatalWriters   = new List <LogWriter>();

            logWriters = new LogWriter[settings.LogWriters.Count];

            for (int i = 0; i < settings.LogWriters.Count; i++)
            {
                ServerSpawnData.LoggingSettings.LogWriterSettings s = settings.LogWriters[i];

                //Create a load data object and backup
                LogWriterLoadData loadData       = new LogWriterLoadData(s.Name, server, s.Settings, GetLoggerFor(nameof(s.Name)));
                PluginLoadData    backupLoadData = new PluginLoadData(s.Name, server, s.Settings, GetLoggerFor(nameof(s.Name)),
#if PRO
                                                                      null,
#endif
                                                                      null);

                LogWriter writer = pluginFactory.Create <LogWriter>(s.Type, loadData, backupLoadData);

                logWriters[i] = writer;

                if (s.LogLevels.Contains(LogType.Trace))
                {
                    traceWriters.Add(writer);
                }
                if (s.LogLevels.Contains(LogType.Info))
                {
                    infoWriters.Add(writer);
                }
                if (s.LogLevels.Contains(LogType.Warning))
                {
                    warningWriters.Add(writer);
                }
                if (s.LogLevels.Contains(LogType.Error))
                {
                    errorWriters.Add(writer);
                }
                if (s.LogLevels.Contains(LogType.Fatal))
                {
                    fatalWriters.Add(writer);
                }
            }

            writerMatrix = new LogWriter[][]
            {
                traceWriters.ToArray(),
                    infoWriters.ToArray(),
                    warningWriters.ToArray(),
                    errorWriters.ToArray(),
                    fatalWriters.ToArray()
            };
        }