Пример #1
0
 public void Unregister(Registries registries)
 {
     registries.Registry <Plugin>().Unregister(this);
     registries.Registry <DeviceTypeAddOn>().UnregisterAll(DeviceTypes);
     registries.Registry <AppEntryAddOn>().UnregisterAll(AppEntries);
     registries.Registry <ParadigmTemplate>().UnregisterAll(Paradigms);
     registries.Registry <DeviceTemplate>().UnregisterAll(Devices);
     registries.Registry <ConsumerTemplate>().UnregisterAll(Consumers);
     MarkerDefinitions.MarkerRegistry.UnregisterAll(CustomMarkers.Values);
 }
Пример #2
0
        public static IReadOnlyCollection <Plugin> ScanPlugins(Registries registries, Action <string, Exception> exceptionHandler)
        {
            var plugins = new LinkedList <Plugin>();

            foreach (var file in Directory.GetFiles(Path.GetFullPath(FileUtils.ExecutableDirectory), PluginFileNamePattern))
            {
                Logger.Info("ScanPlugins - loading plugin", "assemblyFile", file);
                try
                {
                    var plugin = new Plugin(Assembly.LoadFile(file));

                    plugins.AddLast(plugin);
                    plugin.LoadMarkers();
                    plugin.LoadDeviceTypes();
                    plugin.LoadAppEntries();
                    plugin.LoadExperiments();
                    plugin.LoadDevices();
                    plugin.LoadStreamConsumers();

                    registries.Registry <Plugin>().Register(plugin);
                    foreach (var deviceType in plugin.DeviceTypes)
                    {
                        registries.Registry <PluginDeviceType>().Register(deviceType);
                    }
                    foreach (var appEntry in plugin.AppEntries)
                    {
                        registries.Registry <PluginAppEntry>().Register(appEntry);
                    }
                    foreach (var experiment in plugin.Experiments)
                    {
                        registries.Registry <PluginExperiment>().Register(experiment);
                    }
                    foreach (var device in plugin.Devices)
                    {
                        registries.Registry <PluginDevice>().Register(device);
                    }
                    foreach (var streamConsumer in plugin.StreamConsumers)
                    {
                        registries.Registry <PluginStreamConsumer>().Register(streamConsumer);
                    }
                }
                catch (Exception e)
                {
                    Logger.Error("ScanPlugins - failed to load assembly", e, "assemblyFile", file);
                    exceptionHandler(file, e);
                }
            }
            return(plugins);
        }