public async Task <Build> StartBuildAsync(EngineLocatorType locatorType, string locator) { CheckDisposed(); using (await _lock.ReaderLockAsync()) { Engine engine = await _engineRepo.GetByLocatorAsync(locatorType, locator); if (engine == null) { return(null); } EngineRunner runner = GetOrCreateRunner(engine.Id); return(await runner.StartBuildAsync(engine)); } }
public async Task <IEnumerable <TranslationResult> > TranslateAsync( EngineLocatorType locatorType, string locator, int n, IReadOnlyList <string> segment) { CheckDisposed(); using (await _lock.ReaderLockAsync()) { Engine engine = await _engineRepo.GetByLocatorAsync(locatorType, locator); if (engine == null) { return(null); } EngineRunner runner = GetOrCreateRunner(engine.Id); return(await runner.TranslateAsync(n, segment.Preprocess(Preprocessors.Lowercase))); } }
public static async Task <Engine> GetByLocatorAsync(this IEngineRepository engineRepo, EngineLocatorType locatorType, string locator, CancellationToken ct = default(CancellationToken)) { switch (locatorType) { case EngineLocatorType.Id: return(await engineRepo.GetAsync(locator, ct)); case EngineLocatorType.LanguageTag: int index = locator.IndexOf("_", StringComparison.OrdinalIgnoreCase); string sourceLanguageTag = locator.Substring(0, index); string targetLanguageTag = locator.Substring(index + 1); return(await engineRepo.GetByLanguageTagAsync(sourceLanguageTag, targetLanguageTag, ct)); case EngineLocatorType.Project: return(await engineRepo.GetByProjectIdAsync(locator, ct)); } return(null); }
public async Task <bool> TrainSegmentAsync(EngineLocatorType locatorType, string locator, IReadOnlyList <string> sourceSegment, IReadOnlyList <string> targetSegment) { CheckDisposed(); using (await _lock.ReaderLockAsync()) { Engine engine = await _engineRepo.GetByLocatorAsync(locatorType, locator); if (engine == null) { return(false); } EngineRunner runner = GetOrCreateRunner(engine.Id); await runner.TrainSegmentPairAsync(sourceSegment.Preprocess(Preprocessors.Lowercase), targetSegment.Preprocess(Preprocessors.Lowercase)); return(true); } }