// called when an inline assembly is updated public static void HandleAssemblyUpdated(string pluginAssemblyInstanceId, List <PluginInfo> pluginList) { lock (GlobalRegistrations) { if (GlobalRegistrations.ContainsKey(pluginAssemblyInstanceId)) { GlobalRegistrations[pluginAssemblyInstanceId].Clear(); } else { GlobalRegistrations.Add(pluginAssemblyInstanceId, new List <ServerMethodPluginRegistration>()); } pluginList.ForEach(pluginInfo => { var reg = ServerMethodPluginRegistration.Create(pluginAssemblyInstanceId, pluginInfo); GlobalRegistrations[pluginAssemblyInstanceId].Add(reg); }); } lock (EndpointInstanceUse) { if (EndpointInstanceUse.ContainsKey(pluginAssemblyInstanceId)) { foreach (var ep in EndpointInstanceUse[pluginAssemblyInstanceId]) { ep.HandleAssemblyUpdated(pluginAssemblyInstanceId); } EndpointInstanceUse.Remove(pluginAssemblyInstanceId); } } }
public static void Register(string pluginAssemblyInstanceId, PluginInfo pluginInfo) { try { var reg = ServerMethodPluginRegistration.Create(pluginAssemblyInstanceId, pluginInfo); lock (GlobalRegistrations) { if (!GlobalRegistrations.ContainsKey(pluginAssemblyInstanceId)) { GlobalRegistrations.Add(pluginAssemblyInstanceId, new List <ServerMethodPluginRegistration>()); } GlobalRegistrations[pluginAssemblyInstanceId].Add(reg); } } 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); } }