/// <summary> /// The main constructor. It expects an `ISnippets` instance that takes care /// of compiling and keeping track of the code Snippets provided by users. /// </summary> public IQSharpEngine( IShellServer shell, IOptions <KernelContext> context, ILogger <IQSharpEngine> logger, IServiceProvider services, IConfigurationSource configurationSource, PerformanceMonitor performanceMonitor, IShellRouter shellRouter, IEventService eventService, IMagicSymbolResolver magicSymbolResolver, IReferences references ) : base(shell, shellRouter, context, logger, services) { this.performanceMonitor = performanceMonitor; performanceMonitor.Start(); this.Snippets = services.GetService <ISnippets>(); this.SymbolsResolver = services.GetService <ISymbolResolver>(); this.MagicResolver = magicSymbolResolver; this.Workspace = services.GetService <IWorkspace>(); RegisterDisplayEncoder(new IQSharpSymbolToHtmlResultEncoder()); RegisterDisplayEncoder(new IQSharpSymbolToTextResultEncoder()); RegisterDisplayEncoder(new TaskStatusToTextEncoder()); RegisterDisplayEncoder(new StateVectorToHtmlResultEncoder(configurationSource)); RegisterDisplayEncoder(new StateVectorToTextResultEncoder(configurationSource)); RegisterDisplayEncoder(new DataTableToHtmlEncoder()); RegisterDisplayEncoder(new DataTableToTextEncoder()); RegisterDisplayEncoder(new DisplayableExceptionToHtmlEncoder()); RegisterDisplayEncoder(new DisplayableExceptionToTextEncoder()); RegisterDisplayEncoder(new DisplayableHtmlElementEncoder()); RegisterJsonEncoder( JsonConverters.AllConverters .Concat(AzureClient.JsonConverters.AllConverters) .ToArray()); RegisterSymbolResolver(this.SymbolsResolver); RegisterSymbolResolver(this.MagicResolver); RegisterPackageLoadedEvent(services, logger, references); // Handle new shell messages. shellRouter.RegisterHandlers <IQSharpEngine>(); // Report performance after completing startup. performanceMonitor.Report(); logger.LogInformation( "IQ# engine started successfully as process {Process}.", Process.GetCurrentProcess().Id ); eventService?.TriggerServiceInitialized <IExecutionEngine>(this); }
/// <summary> /// The main constructor. It expects an `ISnippets` instance that takes care /// of compiling and keeping track of the code Snippets provided by users. /// </summary> public IQSharpEngine( IShellServer shell, IOptions <KernelContext> context, ILogger <IQSharpEngine> logger, IServiceProvider services, IConfigurationSource configurationSource, PerformanceMonitor performanceMonitor, IShellRouter shellRouter ) : base(shell, context, logger) { this.performanceMonitor = performanceMonitor; performanceMonitor.Start(); this.Snippets = services.GetService <ISnippets>(); this.SymbolsResolver = services.GetService <ISymbolResolver>(); this.MagicResolver = new MagicSymbolResolver(services, logger); RegisterDisplayEncoder(new IQSharpSymbolToHtmlResultEncoder()); RegisterDisplayEncoder(new IQSharpSymbolToTextResultEncoder()); RegisterDisplayEncoder(new TaskStatusToTextEncoder()); RegisterDisplayEncoder(new StateVectorToHtmlResultEncoder(configurationSource)); RegisterDisplayEncoder(new StateVectorToTextResultEncoder(configurationSource)); RegisterDisplayEncoder(new DataTableToHtmlEncoder()); RegisterDisplayEncoder(new DataTableToTextEncoder()); RegisterJsonEncoder(JsonConverters.AllConverters); RegisterSymbolResolver(this.SymbolsResolver); RegisterSymbolResolver(this.MagicResolver); // Handle new shell messages. shellRouter.RegisterHandlers <IQSharpEngine>(); // Report performance after completing startup. performanceMonitor.Report(); logger.LogInformation( "IQ# engine started successfully as process {Process}.", Process.GetCurrentProcess().Id ); }