zoukankan      html  css  js  c++  java
  • supersocket/SocketEngin/BootstrapFactory.cs 详解

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using SuperSocket.SocketBase;
    using SuperSocket.SocketEngine.Configuration;
    using SuperSocket.SocketBase.Config;
    using System.Configuration;
    
    
    namespace SuperSocket.SocketEngine
    {
        /// <summary>
        /// Bootstrap Factory
        /// </summary>
        public static class BootstrapFactory
        {
            /// <summary>
            /// Creates the bootstrap.
            /// </summary>
            /// <param name="config">The config.</param>
            /// <returns></returns>
            public static IBootstrap CreateBootstrap(IConfigurationSource config)
            {
                if (config == null)
                    throw new ArgumentNullException("config");
    
    
                if (config.Isolation == IsolationMode.AppDomain)
                    return new AppDomainBootstrap(config);
                else if (config.Isolation == IsolationMode.Process)
                    return new ProcessBootstrap(config);
                else
                    return new DefaultBootstrap(config);
            }
    
    
            /// <summary>
            /// Creates the bootstrap from app configuration's socketServer section.
            /// </summary>
            /// <returns></returns>
            public static IBootstrap CreateBootstrap()
            {
                var configSection = ConfigurationManager.GetSection("superSocket");
    
    
                if (configSection == null)//to keep compatible with old version
                    configSection = ConfigurationManager.GetSection("socketServer");
    
    
                if(configSection == null)
                    throw new ConfigurationErrorsException("Missing 'superSocket' or 'socketServer' configuration section.");
    
    
                var configSource = configSection as IConfigurationSource;
                if(configSource == null)
                    throw new ConfigurationErrorsException("Invalid 'superSocket' or 'socketServer' configuration section.");
    
    
                return CreateBootstrap(configSource);
            }
    
    
            /// <summary>
            /// Creates the bootstrap.
            /// </summary>
            /// <param name="configSectionName">Name of the config section.</param>
            /// <returns></returns>
            public static IBootstrap CreateBootstrap(string configSectionName)
            {
                var configSource = ConfigurationManager.GetSection(configSectionName) as IConfigurationSource;
    
    
                if (configSource == null)
                    throw new ArgumentException("Invalid section name.");
    
    
                return CreateBootstrap(configSource);
            }
    
    
            /// <summary>
            /// Creates the bootstrap from configuration file.
            /// </summary>
            /// <param name="configFile">The configuration file.</param>
            /// <returns></returns>
            public static IBootstrap CreateBootstrapFromConfigFile(string configFile)
            {
                ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
                fileMap.ExeConfigFilename = configFile;
    
    
                var config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
    
    
                var configSection = config.GetSection("superSocket");
    
    
                if (configSection == null)
                    configSection = config.GetSection("socketServer");
    
    
                return CreateBootstrap(configSection as IConfigurationSource);
            }
        }
    }
    
  • 相关阅读:
    还是模块
    模块
    Django之中间件和Auth模块
    Django之form表单组件、cookie与session
    ORM表查询之F查询和Q查询以及事务
    django之单表和多表查询
    django之模板层
    Django之路由
    Django之前戏
    前端之Bootstrap框架
  • 原文地址:https://www.cnblogs.com/little-white/p/3465965.html
Copyright © 2011-2022 走看看