ShellContext IShellContextFactory.CreateShellContext( ShellSettings settings) { var sw = Stopwatch.StartNew(); _logger.LogInformation("Creating shell context for tenant {0}", settings.Name); var blueprint = _compositionStrategy.Compose(settings, MinimumShellDescriptor()); var provider = _shellContainerFactory.CreateContainer(settings, blueprint); try { var shellcontext = new ShellContext { Settings = settings, Blueprint = blueprint, LifetimeScope = provider, Shell = provider.GetRequiredService<IOrchardShell>() }; _logger.LogVerbose("Created shell context for tenant {0} in {1}ms", settings.Name, sw.ElapsedMilliseconds); return shellcontext; } catch (Exception ex) { _logger.LogError("Cannot create shell context", ex); throw; } }
ShellContext IShellContextFactory.CreateShellContext(ShellSettings settings) { var sw = Stopwatch.StartNew(); if (_logger.IsEnabled(LogLevel.Information)) { _logger.LogInformation("Creating shell context for tenant {0}", settings.Name); } var blueprint = _compositionStrategy.Compose(settings, MinimumShellDescriptor()); var provider = _shellContainerFactory.CreateContainer(settings, blueprint); try { var shellcontext = new ShellContext { Settings = settings, Blueprint = blueprint, ServiceProvider = provider }; if (_logger.IsEnabled(LogLevel.Verbose)) { _logger.LogVerbose("Created shell context for tenant {0} in {1}ms", settings.Name, sw.ElapsedMilliseconds); } return shellcontext; } catch (Exception ex) { _logger.LogError("Cannot create shell context", ex); throw; } }
private string CreateTenantData(SetupContext context, ShellContext shellContext) { // must mark state as Running - otherwise standalone enviro is created "for setup" return Guid.NewGuid().ToString(); }
/// <summary> /// Registers the shell settings in RunningShellTable /// </summary> private void ActivateShell(ShellContext context) { if (_logger.IsEnabled(LogLevel.Debug)) { _logger.LogDebug("Activating context for tenant {0}", context.Settings.Name); } if (_shellContexts.TryAdd(context.Settings.Name, context)) { _runningShellTable.Add(context.Settings); } }
/// <summary> /// Registers the shell settings in RunningShellTable /// </summary> private void ActivateShell(ShellContext context) { _logger.LogDebug("Activating context for tenant {0}", context.Settings.Name); lock (_shellContexts) { _shellContexts[context.Settings.Name] = context; } _runningShellTable.Add(context.Settings); }
/// <summary> /// Starts a Shell and registers its settings in RunningShellTable /// </summary> private void ActivateShell(ShellContext context) { _logger.LogDebug("Activating context for tenant {0}", context.Settings.Name); context.Shell.Activate(); lock (_shellContextsWriteLock) { _shellContexts = (_shellContexts ?? Enumerable.Empty<ShellContext>()) .Where(c => c.Settings.Name != context.Settings.Name) .Concat(new[] { context }) .ToArray(); } _runningShellTable.Add(context.Settings); }