public Engine(ISmtModelFactory smtModelFactory, ITranslationEngineFactory ruleEngineFactory, TimeSpan inactiveTimeout, string configDir, string sourceLanguageTag, string targetLanguageTag) { _smtModelFactory = smtModelFactory; _ruleEngineFactory = ruleEngineFactory; _inactiveTimeout = inactiveTimeout; ConfigDirectory = configDir; SourceLanguageTag = sourceLanguageTag; TargetLanguageTag = targetLanguageTag; _lastUsedTime = DateTime.Now; Projects = new HashSet <Project>(); if (!Directory.Exists(ConfigDirectory)) { Directory.CreateDirectory(ConfigDirectory); _smtModelFactory.InitNewModel(this); } }
public EngineService(IOptions <EngineOptions> options, ISmtModelFactory smtModelFactory, ITranslationEngineFactory ruleEngineFactory) { _options = options.Value; _smtModelFactory = smtModelFactory; _ruleEngineFactory = ruleEngineFactory; _languagePairs = new ConcurrentDictionary <Tuple <string, string>, LanguagePair>(); foreach (string configDir in Directory.EnumerateDirectories(_options.RootDir)) { string configFileName = Path.Combine(configDir, "config.json"); if (!File.Exists(configFileName)) { continue; } LanguagePairDto languagePairConfig = JsonConvert.DeserializeObject <LanguagePairDto>(File.ReadAllText(configFileName)); var languagePair = new LanguagePair(languagePairConfig.SourceLanguageTag, languagePairConfig.TargetLanguageTag, configDir); foreach (ProjectDto projectConfig in languagePairConfig.Projects) { CreateProject(languagePair, projectConfig.Id, projectConfig.IsShared); } _languagePairs[Tuple.Create(languagePair.SourceLanguageTag, languagePair.TargetLanguageTag)] = languagePair; } _commitTimer = new Timer(EngineCommitCallback, null, _options.EngineCommitFrequency, _options.EngineCommitFrequency); }