public void Register(PluginInfo pluginInfo)
        {
            try
            {
                if (pluginInfo.Type != PluginType.BackgroundThread)
                {
                    throw new ArgumentException("Plugin must be a BackgroundThread type", nameof(pluginInfo));
                }

                var existing = _registrations.FirstOrDefault(r => r.PluginGuid.Equals(pluginInfo.Guid.ToString(), StringComparison.OrdinalIgnoreCase));

                if (existing == null)
                {
                    existing = BackgroundThreadPluginRegistration.Create(pluginInfo);
                    _registrations.Add(existing);
                }

                existing.CreateEndpointInstances(_hubContext);

                var list = Hubs.BackgroundPluginHub.BgPluginsList();
                _hubContext.Clients.Group(Hubs.BackgroundPluginHub.ADMIN_GROUP_NAME).SendAsync("updateList", list);
            }
            catch (Exception ex)
            {
                SessionLog.Error($"Failed to instantiate plugin '{pluginInfo.Name}' ({pluginInfo.Guid}) from assembly {pluginInfo.Assembly.FullName}. See exception that follows.");
                SessionLog.Exception(ex);
            }
        }
Beispiel #2
0
        public static BackgroundThreadPluginRegistration Create(PluginInfo pluginInfo)
        {
            var reg = new BackgroundThreadPluginRegistration(pluginInfo.Assembly, pluginInfo.TypeInfo, pluginInfo.Guid, pluginInfo.Name);

            return(reg);
        }