public ExecuteRequestHandler(IExecutionEngine engine, IShellServer shellServer, ICommsRouter router, ILogger <ExecuteRequestHandler> logger) { if (engine is BaseEngine baseEngine) { this.engine = baseEngine; } else { throw new Exception("The ExecuteRequestHandler requires that the IExecutionEngine service inherits from BaseEngine."); } this.shellServer = shellServer; this.logger = logger; this.router = router; }
public ClientInfoListener( ILogger <ClientInfoListener> logger, IMetadataController metadata, ICommsRouter commsRouter ) { this.logger = logger; this.metadata = metadata; this.commsRouter = commsRouter; logger.LogDebug("Started client info listener."); commsRouter.SessionOpenEvent("iqsharp_clientinfo").On += async(session, data) => { logger.LogDebug("Got iqsharp_clientinfo message: {Data}", data.ToString()); if (!data.TryAs <ClientInfoContent>(out var content)) { logger.LogError( "Got client info via comms, but failed to deserialize:\n{RawData}", data.ToString() ); return; } metadata.UserAgent = content.UserAgent ?? metadata.UserAgent; metadata.ClientId = content.ClientId ?? metadata.ClientId; metadata.ClientIsNew = content.ClientIsNew ?? metadata.ClientIsNew; metadata.ClientCountry = content.ClientCountry ?? metadata.ClientCountry; metadata.ClientLanguage = content.ClientLanguage ?? metadata.ClientLanguage; metadata.ClientHost = content.ClientHost ?? metadata.ClientHost; metadata.ClientOrigin = content.ClientOrigin ?? metadata.ClientOrigin; metadata.ClientFirstOrigin = content.ClientFirstOrigin ?? metadata.ClientFirstOrigin; await Task.Run(() => { session.SendMessage( metadata.AsClientInfoContent() ); session.Close(); }); }; }
/// <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, IPerformanceMonitor performanceMonitor, IShellRouter shellRouter, IMetadataController metadataController, ICommsRouter commsRouter, IEventService eventService ) : base(shell, shellRouter, context, logger, services) { this.performanceMonitor = performanceMonitor; performanceMonitor.EnableBackgroundReporting = true; performanceMonitor.OnKernelPerformanceAvailable += (source, args) => { logger.LogInformation( "Estimated RAM usage:" + "\n\tManaged: {Managed} bytes" + "\n\tTotal: {Total} bytes", args.ManagedRamUsed, args.TotalRamUsed ); }; performanceMonitor.Start(); this.configurationSource = configurationSource; this.services = services; this.logger = logger; this.metadataController = metadataController; this.commsRouter = commsRouter; this.eventService = eventService; // Start comms routers as soon as possible, so that they can // be responsive during kernel startup. this.AttachCommsListeners(); }
public ExecutionChannel(BaseEngine engine, Message parent, ICommsRouter router) { this.parent = parent; this.engine = engine; this.router = router; }