コード例 #1
0
        void IServerModuleStateContext.Initialize()
        {
            // Activate logging
            LoggerManagement.ActivateLogging(this);
            LoggerManagement.AppendListenerToStream(ProcessLogMessage, LogLevel.Warning, Name);
            Logger.Log(LogLevel.Info, "{0} is initializing...", Name);

            // Get config and parse for container settings
            Config = ConfigManager.GetConfiguration <TConf>();
            ConfigParser.ParseStrategies(Config, Strategies);

            // Initialize container with server module dll and this dll
            Container = ContainerFactory.Create(Strategies, GetType().Assembly)
                        .Register <IParallelOperations, ParallelOperations>()
                        // Register instances for this cycle
                        .SetInstance(Config).SetInstance(Logger);

            OnInitialize();

            // Execute SubInitializer
            var subInits = Container.ResolveAll <ISubInitializer>() ?? new ISubInitializer[0];

            foreach (var subInitializer in subInits)
            {
                subInitializer.Initialize(Container);
            }

            Logger.Log(LogLevel.Info, "{0} initialized!", Name);

            // After initializing the module, all notifications are unnecessary
            Notifications.Clear();
        }
コード例 #2
0
        ///
        public virtual void Initialize(IModuleContainerFactory containerFactory, IModuleManager moduleManager, IConfigProvider configProvider)
        {
            RegionConfig = configProvider.GetConfiguration <ShellRegionConfig>();

            // Initialize config if necessary
            if (!RegionConfig.Initialized)
            {
                BuildConfig(RegionConfig);
                RegionConfig.Initialized = true;
                configProvider.SaveConfiguration(RegionConfig);
            }

            // Load components from local assembly, inherited assembly and regions from directory
            ShellContainer = containerFactory.Create(new Dictionary <Type, string>(), GetType().Assembly);

            // Register region plugins in local container
            foreach (var module in moduleManager.EnabledModules.OfType <IRegionModule>())
            {
                ShellContainer.SetInstance(module, module.Name);
            }

            LoadPlugins(ShellContainer);
        }