Example #1
0
        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));
            }
        }
Example #2
0
        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)));
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
            }
        }