コード例 #1
0
        public SMTPSimulatorService()
        {
            Logger.Info("The SMTPSimulator is starting...");

            FixLoggerPaths();
            InitializeDataDirectory();
            InitializeComponent();

            var pluginFolder = ConfigurationManager.AppSettings["PluginFolder"];

            ComposablePartCatalog catalog;

            if (!string.IsNullOrEmpty(pluginFolder))
            {
                catalog = new AggregateCatalog(
                    new AssemblyCatalog(typeof(SMTPSimulatorService).Assembly),
                    new DirectoryCatalog(AssemblyDirectory),
                    new DirectoryCatalog(pluginFolder)
                    );
            }
            else
            {
                catalog = new AggregateCatalog(
                    new AssemblyCatalog(typeof(SMTPSimulatorService).Assembly),
                    new DirectoryCatalog(AssemblyDirectory)
                    );
            }

            _container = new CompositionContainer(catalog);
            _container.ComposeExportedValue(_container);
            _container.SatisfyImportsOnce(this);

            var loader = new CommandHandlerLoader(catalog);

            _smtpServer = new SMTPServer(loader);

            foreach (var tt in _timeTables.All())
            {
                var generator = new TimeTableGenerator(tt, _mailQueue, _container);
                _generators.Add(tt.Id, generator);

                if (tt.Active)
                {
                    generator.Start();
                }
            }

            _timeTables.OnTimeTableAdd    += OnTimeTableAdd;
            _timeTables.OnTimeTableRemove += OnTimeTableRemove;

            _retentionManager = new RetentionManager();

            RefreshServers();
            RefreshSenders();

            Logger.Info("The SMTPSimulator Service has started.");
        }
コード例 #2
0
        private void OnTimeTableAdd(ITimeTable tt)
        {
            lock (_generators)
            {
                var generator = new TimeTableGenerator(tt, _mailQueue, _container);
                _generators.Add(tt.Id, generator);

                if (tt.Active)
                {
                    generator.Start();
                }
            }
        }