コード例 #1
0
 private void RegisterPlugin(IPlugin plugin)
 {
     TryAdd(plugin, AnalyzeConfiguration.FindAsyncCounterpartsFinders);
     TryAdd(plugin, AnalyzeConfiguration.InvocationExpressionAnalyzers);
     TryAdd(plugin, AnalyzeConfiguration.BodyFunctionReferencePostAnalyzers);
     TryAdd(plugin, AnalyzeConfiguration.MethodExceptionHandlers);
     TryAdd(plugin, AnalyzeConfiguration.PreconditionCheckers);
     TryAdd(plugin, TransformConfiguration.DocumentTransformers);
     TryAdd(plugin, TransformConfiguration.FunctionReferenceTransformers);
     TryAdd(plugin, TransformConfiguration.MethodTransformers);
     TryAdd(plugin, TransformConfiguration.FunctionTransformers);
     TryAdd(plugin, TransformConfiguration.TypeTransformers);
     RegisteredPlugins.Add(plugin);
 }
コード例 #2
0
 private void RegisterPlugin(IPlugin plugin)
 {
     TryAdd(plugin, RegisteredConfigurators);
     TryAdd(plugin, AnalyzeConfiguration.AsyncCounterpartsFinders);
     TryAdd(plugin, AnalyzeConfiguration.InvocationExpressionAnalyzers);
     TryAdd(plugin, AnalyzeConfiguration.BodyFunctionReferencePostAnalyzers);
     TryAdd(plugin, AnalyzeConfiguration.MethodExceptionHandlers);
     TryAdd(plugin, AnalyzeConfiguration.PreconditionCheckers);
     TryAdd(plugin, AnalyzeConfiguration.PreserveMethodReturnTypeProviders);
     TryAdd(plugin, AnalyzeConfiguration.MethodConversionProviders);
     TryAdd(plugin, AnalyzeConfiguration.TypeConversionProviders);
     TryAdd(plugin, AnalyzeConfiguration.FieldConversionProviders);
     TryAdd(plugin, AnalyzeConfiguration.AlwaysAwaitMethodProviders);
     TryAdd(plugin, AnalyzeConfiguration.SearchForMethodReferencesProviders);
     TryAdd(plugin, AnalyzeConfiguration.CancellationTokens.MethodRequiresCancellationTokenProviders);
     TryAdd(plugin, TransformConfiguration.DocumentTransformers);
     TryAdd(plugin, TransformConfiguration.FunctionReferenceTransformers);
     TryAdd(plugin, TransformConfiguration.MethodTransformers);
     TryAdd(plugin, TransformConfiguration.FunctionTransformers);
     TryAdd(plugin, TransformConfiguration.TypeTransformers);
     RegisteredPlugins.Add(plugin);
 }
コード例 #3
0
        internal List <Plugin> GetUnregisteredPlugins()
        {
            List <Plugin> unregistered = new List <Plugin>();

            //check the plugins path is valid
            if (Directory.Exists(PluginsPath))
            {
                string[] pluginFiles = Directory.GetFiles(PluginsPath, "*.xml", SearchOption.AllDirectories);
                int      tempId      = Int32.MinValue;

                foreach (string filePath in pluginFiles)
                {
                    //check to see if filepath listed as a registered plugin
                    if (RegisteredPlugins.FirstOrDefault(p => p.FilePath.ToLower() == filePath.ToLower()) == null)
                    {
                        //create new unregistered plugin
                        Plugin plugin = Plugin.New();
                        plugin.IsUnregistered = true;

                        //add a temporary pluginId for identification purposes
                        plugin.PluginId = tempId++;

                        //try and deserialize the plugin xml config
                        IPlugin pluginFile = null;
                        try
                        {
                            pluginFile = PluginHelper.ReadPlugin(filePath);
                        }
                        catch (Exception e)
                        {
                            //an error occurred so assume the config xml
                            //is invalid and does not validate correctly
                            plugin.FormatErrorMessage = String.Format("{0} {1}", e.Message, (e.InnerException != null ? ":- " + e.InnerException.Message : String.Empty));
                        }

                        AddPluginFile(plugin, pluginFile, filePath);

                        if (plugin.HasPluginFile)
                        {
                            if (plugin.RegistrationKey != Guid.Empty)
                            {
                                //plugin has a registration key so see if
                                //it can be found in registered plugins
                                Plugin registeredPlugin = RegisteredPlugins.FirstOrDefault(p => p.RegistrationKey == plugin.RegistrationKey);

                                if (registeredPlugin != null)
                                {
                                    //is registered plugin listed with a missing file status
                                    if ((registeredPlugin.Status & PluginStatus.PluginMissing) != 0)
                                    {
                                        //attach plugin file to its registered plugin
                                        AddPluginFile(registeredPlugin, plugin.PluginFile, filePath);
                                        //update new path details
                                        Update(registeredPlugin);
                                    }
                                    continue;                                     //move to next file
                                }
                                else
                                {
                                    //reset the registration key as must be copied from somewhere else
                                    plugin.RegistrationKey = Guid.Empty;
                                }
                            }
                        }
                        unregistered.Add(plugin);
                    }
                }
            }
            else
            {
                m_Logger.Error(string.Format("The plugins path is not set to a valid folder - {0}", PluginsPath));
            }
            return(unregistered);
        }
コード例 #4
0
ファイル: Context.cs プロジェクト: shuxingliu/SambaPOS-3
 /// <summary>
 /// Creates new instance with default Functions/Types/Scope.
 /// </summary>
 public Context()
 {
     Types = new RegisteredTypes();
     ExternalFunctions = new ExternalFunctions();
     Words = new RegisteredWords();
     Plugins = new RegisteredPlugins();
     PluginsMeta = new MetaPluginContainer();
     Symbols = new Symbols();
     Memory = new Memory();
     Limits = new Limits(this);
     TokenAliases = new Dictionary<string, Token>();
     var stack = new CallStack(Limits.CheckCallStack);
     Callbacks = new Callbacks();
     State = new LangState(stack);
     Units = new Units();
     Methods = new RegisteredMethods();
     Plugins.Init();
 }
            public override void UnregisterPlugin(string serviceBusPluginName)
            {
                var toRemove = RegisteredPlugins.First(x => x.Name == serviceBusPluginName);

                RegisteredPlugins.Remove(toRemove);
            }
 public override void RegisterPlugin(ServiceBusPlugin serviceBusPlugin)
 {
     RegisteredPlugins.Add(serviceBusPlugin);
 }
コード例 #7
0
ファイル: PluginsManager.cs プロジェクト: esseivan/ESN_Lib
 /// <summary>
 /// Unregister a pugin
 /// </summary>
 public void UnregisterPlugin(Plugin Plugin)
 {
     RegisteredPlugins.Remove(Plugin);
 }
コード例 #8
0
ファイル: PluginsManager.cs プロジェクト: esseivan/ESN_Lib
 /// <summary>
 /// Register a new plugin
 /// </summary>
 public void RegisterPlugin(Plugin Plugin)
 {
     RegisteredPlugins.Add(Plugin);
 }