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;
 }
Exemplo n.º 2
0
        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();
                });
            };
        }
Exemplo n.º 3
0
        /// <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();
        }
Exemplo n.º 4
0
 public ExecutionChannel(BaseEngine engine, Message parent, ICommsRouter router)
 {
     this.parent = parent;
     this.engine = engine;
     this.router = router;
 }