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."); }
private void OnTimeTableAdd(ITimeTable tt) { lock (_generators) { var generator = new TimeTableGenerator(tt, _mailQueue, _container); _generators.Add(tt.Id, generator); if (tt.Active) { generator.Start(); } } }