Пример #1
0
        public static IRunner CreateForWorkerRole(Role role, RoleIsolationMode isolation)
        {
            var config = role.Config;

            var assemblyFilePath = config.Assembly;
            var assemblyPath     = Path.GetDirectoryName(assemblyFilePath);

            if (HasBeenReBuilt(assemblyPath) && isolation == RoleIsolationMode.Thread)
            {
                isolation          = RoleIsolationMode.AppDomain;
                role.IsolationMode = isolation;
            }

            switch (isolation)
            {
            case RoleIsolationMode.Thread:
                return(new ThreadRunner(role, assemblyFilePath, ConfigurationLocator.LocateConfigurationFile(config.ConfigurationPath), role.RoleName));

            case RoleIsolationMode.AppDomain:
                var setup = new AppDomainSetup
                {
                    ApplicationBase   = assemblyPath,
                    ConfigurationFile = config.Assembly + ".config",
                };
                return(new AppDomainRunner(role, setup, assemblyFilePath, ConfigurationLocator.LocateConfigurationFile(config.ConfigurationPath), role.RoleName));

            default:
                throw new NotSupportedException();
            }
        }
Пример #2
0
        public static SolidColorBrush GetStatusColour(RoleStatus status, RoleIsolationMode isolationMode)
        {
            switch (status)
            {
            case RoleStatus.Starting:
                return(isolationMode == RoleIsolationMode.Thread
                        ? Green
                        : Blue);

            case RoleStatus.Running:
                return(isolationMode == RoleIsolationMode.Thread
                        ? Green
                        : Blue);

            case RoleStatus.Stopping:
                return(BloodRed);

            case RoleStatus.Crashing:
                return(BloodRed);

            case RoleStatus.Recycling:
                return(BloodRed);

            case RoleStatus.Stopped:
                return(Grey);

            case RoleStatus.Sequenced:
                return(Grey);

            default:
                return(Grey);
            }
        }
Пример #3
0
 public static SolidColorBrush GetStatusColour(RoleStatus status, RoleIsolationMode isolationMode)
 {
     switch (status)
     {
         case RoleStatus.Starting:
             return isolationMode == RoleIsolationMode.Thread
                 ? Green
                 : Blue;
         case RoleStatus.Running:
             return isolationMode == RoleIsolationMode.Thread
                 ? Green
                 : Blue;
         case RoleStatus.Stopping:
             return BloodRed;
         case RoleStatus.Crashing:
             return BloodRed;
         case RoleStatus.Recycling:
             return BloodRed;
         case RoleStatus.Stopped:
             return Grey;
         case RoleStatus.Sequenced:
             return Grey;
         default:
             return Grey;
     }
 }
Пример #4
0
        public static IRunner CreateForWorkerRole(Role role, RoleIsolationMode isolation)
        {
            var config = role.Config;
            var configurationPath = config.ConfigurationPath;
            var configurationFilePath = ConfigurationLocator.LocateConfigurationFile(configurationPath);
            var serviceDefinitionPath = ConfigurationLocator.LocateServiceDefinition(configurationPath);

            var assemblyFilePath = config.Assembly;
            var assemblyPath = Path.GetDirectoryName(assemblyFilePath);

            if (HasBeenReBuilt(assemblyPath) && isolation == RoleIsolationMode.Thread)
            {
                isolation = RoleIsolationMode.AppDomain;
                role.IsolationMode = isolation;
            }

            switch (isolation)
            {
                case RoleIsolationMode.Thread:
                    return new ThreadRunner(role, assemblyFilePath, configurationFilePath, serviceDefinitionPath, role.RoleName);
                case RoleIsolationMode.AppDomain:
                    var setup = new AppDomainSetup
                    {
                        ApplicationBase = assemblyPath,
                        ConfigurationFile = config.Assembly + ".config",
                    };
                    return new AppDomainRunner(role, setup, assemblyFilePath, configurationFilePath, serviceDefinitionPath, role.RoleName);
                default:
                    throw new NotSupportedException();
            }
        }
Пример #5
0
        public static IRunner CreateForWebRole(Role role, RoleIsolationMode isolation)
        {
            var args = WebConfigHelper.Create(role.Config);

            var assemblyPath = Path.GetDirectoryName(args.Assembly);
            if (HasBeenReBuilt(assemblyPath) && isolation == RoleIsolationMode.Thread)
            {
                isolation = RoleIsolationMode.AppDomain;
                role.IsolationMode = isolation;
            }

            switch (isolation)
            {
                case RoleIsolationMode.Thread:
                    return new ThreadRunner(role, args.Assembly, args.ConfigurationPath, args.ServiceDefinitionPath, args.RoleName);
                case RoleIsolationMode.AppDomain:
                    var setup = new AppDomainSetup
                    {
                        ApplicationBase = args.SiteBinDirectory,
                        ConfigurationFile = WebConfigHelper.DetermineWebConfigPath(args.Assembly)
                    };
                    return new AppDomainRunner(role, setup, args.Assembly, args.ConfigurationPath, args.ServiceDefinitionPath, args.RoleName);
                default:
                    throw new NotSupportedException();
            }
        }
Пример #6
0
        public static IRunner CreateForWebRole(Role role, RoleIsolationMode isolation)
        {
            var args = WebConfigHelper.Create(role.Config);


            var assemblyPath = Path.GetDirectoryName(args.Assembly);

            if (HasBeenReBuilt(assemblyPath) && isolation == RoleIsolationMode.Thread)
            {
                isolation          = RoleIsolationMode.AppDomain;
                role.IsolationMode = isolation;
            }

            switch (isolation)
            {
            case RoleIsolationMode.Thread:
                return(new ThreadRunner(role, args.Assembly, args.ConfigurationPath, args.ServiceDefinitionPath, args.RoleName));

            case RoleIsolationMode.AppDomain:
                var setup = new AppDomainSetup
                {
                    ApplicationBase   = args.SiteBinDirectory,
                    ConfigurationFile = WebConfigHelper.DetermineWebConfigPath(args.Assembly)
                };
                return(new AppDomainRunner(role, setup, args.Assembly, args.ConfigurationPath, args.ServiceDefinitionPath, args.RoleName));

            default:
                throw new NotSupportedException();
            }
        }