Beispiel #1
0
        public void Handle(PluginErrorMessage message)
        {
            var failedPlugin = _pluginEngine.Get(message.PluginId);

            if (failedPlugin == null)
            {
                return;
            }

            var unloadOrder = _pluginEngine.GetUnloadOrder(message.PluginId);

            foreach (var pluginId in unloadOrder)
            {
                _pluginEngine.Unload(pluginId);
            }

            if (failedPlugin.ErrorCount >= MaxErrorCount)
            {
                _logger.Error("Plugin {PluginId} has failed {ErrorCount} or more times. Not reloading.", message.PluginId, MaxErrorCount);
                return;
            }

            foreach (var pluginId in unloadOrder.Reverse())
            {
                _pluginEngine.Load(pluginId);
            }
        }