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);
            }
        }
    }
    
  • 相关阅读:
    2190 ACM 数学概率论的乘法和加法原则
    2186 ACM 水题 int 向下取整
    2110 ACM Crisis of HDU 母函数
    2079 ACM 选课时间 背包 或 母函数
    2111 ACM 贪心 水题
    2108 ACM 向量积 凹凸
    My Web Developer Roadmap
    2109 ACM 排序
    2107 ACM 水题
    vi的常用命令
  • 原文地址:https://www.cnblogs.com/little-white/p/3465965.html
Copyright © 2011-2022 走看看