コード例 #1
0
ファイル: ShellHost.cs プロジェクト: china-live/OCore
        /// <summary>
        /// Creates a shell context based on shell settings
        /// </summary>
        public Task <ShellContext> CreateShellContextAsync(ShellSettings settings)
        {
            if (settings.State == TenantState.Uninitialized)
            {
                if (_logger.IsEnabled(LogLevel.Debug))
                {
                    _logger.LogDebug("Creating shell context for tenant {0} setup", settings.Name);
                }

                return(_shellContextFactory.CreateSetupContextAsync(settings));
            }
            else if (settings.State == TenantState.Disabled)
            {
                if (_logger.IsEnabled(LogLevel.Debug))
                {
                    _logger.LogDebug("Creating disabled shell context for tenant {0} setup", settings.Name);
                }

                return(Task.FromResult(new ShellContext {
                    Settings = settings
                }));
            }
            else if (settings.State == TenantState.Running || settings.State == TenantState.Initializing)
            {
                if (_logger.IsEnabled(LogLevel.Debug))
                {
                    _logger.LogDebug("Creating shell context for tenant {0}", settings.Name);
                }

                return(_shellContextFactory.CreateShellContextAsync(settings));
            }
            else
            {
                throw new InvalidOperationException("Unexpected shell state for " + settings.Name);
            }
        }