public Assembly LoadPrecompiledExtension(IExtensionInfo extensionInfo) { if (IsAmbientExtension(extensionInfo)) { return(null); } var projectContext = GetProjectContext(extensionInfo); if (!IsPrecompiledContext(projectContext)) { return(null); } if (IsAssemblyLoaded(extensionInfo.Id)) { return(_loadedAssemblies[extensionInfo.Id].Value); } if (projectContext != null) { LoadProject(projectContext); } else { LoadPrecompiledModule(extensionInfo); } return(IsAssemblyLoaded(extensionInfo.Id) ? _loadedAssemblies[extensionInfo.Id].Value : null); }
public ExtensionEntry Load(IExtensionInfo extensionInfo) { try { var assembly = _extensionLibraryService.LoadAmbientExtension(extensionInfo); if (assembly == null) { return(null); } if (_logger.IsEnabled(LogLevel.Information)) { _logger.LogInformation("Loaded referenced ambient extension \"{0}\": assembly name=\"{1}\"", extensionInfo.Id, assembly.FullName); } return(new ExtensionEntry { ExtensionInfo = extensionInfo, Assembly = assembly, ExportedTypes = assembly.ExportedTypes }); } catch { return(null); } }
public ExtensionEntry Load(IExtensionInfo extensionInfo) { if (!ExtensionsSearchPaths.Any(x => extensionInfo.SubPath.StartsWith(x))) { return(null); } try { var assembly = _extensionLibraryService.LoadPrecompiledExtension(extensionInfo); if (assembly == null) { return(null); } if (_logger.IsEnabled(LogLevel.Information)) { _logger.LogInformation("Loaded referenced precompiled extension \"{0}\": assembly name=\"{1}\"", extensionInfo.Id, assembly.FullName); } return(new ExtensionEntry { ExtensionInfo = extensionInfo, Assembly = assembly, ExportedTypes = assembly.ExportedTypes }); } catch { return(null); } }
private SunsetLake GetSepLake(Dictionary <string, object> args) { SunsetLake s_lake = new SunsetLake(); s_lake.RegisterSingleton <ILogger>(LoggerFactory.Auto(this.GetType().Name)); s_lake.RegisterSingleton <ClassTextReader>(() => { return(ClassTextReaderCache.Acquire(this.GetType())); }); s_lake.RegisterSingleton <IExtensionInfo>(() => { return(this.GetExtensionInfo()); }); s_lake.RegisterSingleton <ILeafUI>(() => { ILeafUI leafUI = this.lake !.Get <ILeafUI>(); IExtensionInfo inf = this.GetExtensionInfo(); leafUI.Title = inf.Name(); leafUI.Icon = inf.Icon(); return(leafUI); }); s_lake.RegisterSingleton <Dictionary <string, object> >(() => { return(args ?? new Dictionary <string, object>()); }); return(s_lake); }
public ExtensionEntry Load(IExtensionInfo extensionInfo) { try { var assembly = Assembly.Load(new AssemblyName(extensionInfo.Id)); if (assembly == null) { return(null); } if (_logger.IsEnabled(LogLevel.Information)) { _logger.LogInformation("Loaded referenced ambient extension \"{0}\": assembly name=\"{1}\"", extensionInfo.Id, assembly.FullName); } return(new ExtensionEntry { ExtensionInfo = extensionInfo, Assembly = assembly, ExportedTypes = assembly.ExportedTypes }); } catch { if (_logger.IsEnabled(LogLevel.Information)) { _logger.LogInformation("An extension found but was not loaded: \"{0}\". It might denote an extension which was not referenced by the running application project.", extensionInfo.Id); } return(null); } }
internal static Task <object?> CreateTask(IExtensionInfo info, Dictionary <string, object> args, Action <Thread> threadReceiver, ILake source) { return(new Task <object?>(() => { try { Thread.CurrentThread.Name = $"Extension Task {info.Id}"; using var procedure = info.OpenProcedure(); threadReceiver(Thread.CurrentThread); procedure.Source = source; procedure.Args = args; return procedure.Run(); } catch (Exception e) { SLogger.Warn("ExtensionTask", "Uncaught error", e); var title = string.Format(new T().RxGetClassText("error_title_fmt"), info.Name()); LakeProvider.Lake.Get <IAppManager>().ShowException(title, e.GetType().Name, e); return default; } })); }
public static IFileInfo GetExtensionFileInfo( this IHostingEnvironment parentFileSystem, IExtensionInfo extensionInfo, string subPath) { return(parentFileSystem.ContentRootFileProvider.GetFileInfo( Path.Combine(extensionInfo.SubPath, subPath))); }
public bool Equals([AllowNull] IExtensionInfo other) { if (other is JSModuleExtensionInfo extInf) { return(extInf.Id == this.Id); } return(false); }
public TaskInfo(Task <object?> task, IExtensionInfo extension) { if (task is null) { throw new ArgumentNullException(nameof(task)); } Task = task; Extension = extension; }
public Assembly LoadAmbientExtension(IExtensionInfo extensionInfo) { if (IsAmbientExtension(extensionInfo)) { return(Assembly.Load(new AssemblyName(extensionInfo.Id))); } return(null); }
public ThemeExtensionInfo(IExtensionInfo extensionInfo) { _extensionInfo = extensionInfo; // No need to do any further verification since the attributes themselves handle that on the front end var themeInfo = _extensionInfo.Manifest.ModuleInfo as ThemeAttribute; BaseTheme = themeInfo?.BaseTheme; }
public Task <ExtensionEntry> LoadExtensionAsync(IExtensionInfo extensionInfo) { this.EnsureInitialized(); if (this._extensions.TryGetValue(extensionInfo.get_Id(), out V_0)) { return(Task.FromResult <ExtensionEntry>(V_0)); } return(Task.FromResult <ExtensionEntry>(null)); }
private void StateCheck(IExtensionInfo inf) { IDevice?currentDevice = deviceManager !.Selected; if (!inf.IsRunnableCheck(currentDevice)) { throw new DeviceStateIsNotCorrectException(inf.RequiredDeviceState(), currentDevice?.State); } }
public ThemeExtensionInfo(IExtensionInfo extensionInfo) { _extensionInfo = extensionInfo; var baseTheme = _extensionInfo.Manifest.ConfigurationRoot["basetheme"]; if (baseTheme != null && baseTheme.Length != 0) { _baseTheme = baseTheme.ToString(); } }
private void callHandler_OnMyPhoneStatusChanged(object sender, MyPhonePlugins.MyPhoneStatus status) { if (status == MyPhonePlugins.MyPhoneStatus.LoggedIn) { this.extensionInfo = sender as MyPhonePlugins.IExtensionInfo; } LogHelper.Log(Environment.SpecialFolder.ApplicationData, "CallTriggerCmd.log", String.Format("MyPhoneStatusChanged - Status='{0}' - Extension='{1}'", status, extensionInfo == null ? String.Empty : extensionInfo.Number)); Callback(channel => channel.MyPhoneStatusChanged()); }
public InternalFeatureInfo( string id, IExtensionInfo extensionInfo) { _id = id; _name = id; _priority = 0; _category = null; _description = null; _extension = extensionInfo; _dependencies = new string[0]; }
private void StateCheck(IExtensionInfo inf) { IDevice?currentDevice = deviceManager !.Selected; bool isNoMatterDeviceState = (inf.RequiredDeviceState() == AutumnBoxExtension.NoMatter); bool deviceStateCorrect = inf.RequiredDeviceState().HasFlag(currentDevice?.State ?? default); bool runnable = isNoMatterDeviceState || deviceStateCorrect; if (!runnable) { throw new DeviceStateIsNotCorrectException(inf.RequiredDeviceState(), currentDevice?.State); } }
public ThemeExtensionInfo(IExtensionInfo extensionInfo) { _extensionInfo = extensionInfo; var themeInfo = _extensionInfo.Manifest.ModuleInfo as ThemeAttribute; var baseTheme = themeInfo?.BaseTheme; if (baseTheme != null && baseTheme.Length != 0) { _baseTheme = baseTheme.Trim().ToString(); } }
public static byte[] Icon(this IExtensionInfo extensionInfo) { try { string iconSource = extensionInfo.Metadata[ExtensionMetadataKeys.ICON]?.Invoke() as string ?? BASE64ICON; return(ReadAsBase64(iconSource) ?? ReadAsResource(extensionInfo as ClassExtensionInfo, iconSource) ?? Convert.FromBase64String(iconSource)); } catch { return(Convert.FromBase64String(BASE64ICON)); }
public static string Description(this IExtensionInfo extensionInfo) { string DEFAULT_VALUE = String.Empty; try { return(extensionInfo.Metadata[ExtensionMetadataKeys.DESCRIPTION]?.Invoke() as string ?? DEFAULT_VALUE); } catch (Exception) { return(DEFAULT_VALUE); } }
public Task <object?> Start(IExtensionInfo inf, Dictionary <string, object>?args = null) { StateCheck(inf); string id = GenerateId(); var task = ExtensionTaskFactory.CreateTask(inf, args ?? new Dictionary <string, object>(), (thread) => { taskInfos[id].Thread = thread; }, lake !); taskInfos[id] = new TaskInfo(task, inf); task.Start(); return(task); }
public static Version Version(this IExtensionInfo extensionInfo) { var DEFAULT_VALUE = new Version(1, 0, 0); try { return(extensionInfo.Metadata[ExtensionMetadataKeys.VERSION]?.Invoke() as Version ?? DEFAULT_VALUE); } catch (Exception) { return(DEFAULT_VALUE); } }
public static string Name(this IExtensionInfo extensionInfo) { const string DEFAULT_VALUE = "Unknown Extension"; try { return(extensionInfo.Metadata[ExtensionMetadataKeys.NAME]?.Invoke() as string ?? DEFAULT_VALUE); } catch { return(DEFAULT_VALUE); } }
public InternalFeatureInfo( string id, IExtensionInfo extensionInfo) { Id = id; Name = id; Priority = 0; Category = null; Description = null; DefaultTenantOnly = false; Extension = extensionInfo; Dependencies = new string[0]; }
public static bool NeedRoot(this IExtensionInfo extensionInfo) { const bool DEFAULT_VALUE = false; try { return(extensionInfo.Metadata[ExtensionMetadataKeys.ROOT]?.Invoke() as bool? ?? DEFAULT_VALUE); } catch { return(DEFAULT_VALUE); } }
public Task <ExtensionEntry> LoadExtensionAsync(IExtensionInfo extensionInfo) { EnsureInitialized(); ExtensionEntry extension; if (_extensions.TryGetValue(extensionInfo.Id, out extension)) { return(Task.FromResult(extension)); } return(Task.FromResult <ExtensionEntry>(null)); }
public IEnumerable <IFeatureInfo> GetFeatures( IExtensionInfo extensionInfo, IManifestInfo manifestInfo) { List <IFeatureInfo> featureInfos = new List <IFeatureInfo>(); foreach (var provider in _featuresProviders) { featureInfos.AddRange(provider.GetFeatures(extensionInfo, manifestInfo)); } return(featureInfos); }
public ExtensionEntry Load(IExtensionInfo extensionInfo) { foreach (var loader in _extensionLoaders.OrderBy(x => x.Order)) { var entry = loader.Load(extensionInfo); if (entry != null) { return(entry); } } return(new ExtensionEntry { ExtensionInfo = extensionInfo, IsError = true, ExportedTypes = Enumerable.Empty <Type>() }); }
public ExtensionEntry Load(IExtensionInfo extensionInfo) { foreach (var loader in _extensionLoaders.OrderBy(x => x.Order)) { var entry = loader.Load(extensionInfo); if (entry != null) { return(entry); } } return(new ExtensionEntry { ExtensionInfo = extensionInfo, IsError = true }); }
public Task <ExtensionEntry> LoadExtensionAsync(IExtensionInfo extensionInfo) { // Results are cached so that there is no mismatch when loading an assembly twice. // Otherwise the same types would not match. return(_extensions.GetOrAdd(extensionInfo.Id, (key) => { var extension = _extensionLoader.Load(extensionInfo); if (extension.IsError && L.IsEnabled(LogLevel.Warning)) { L.LogError("No suitable loader found for extension \"{0}\"", extensionInfo.Id); } return Task.FromResult(extension); })); }