static async Task OutputWorker(UsageDatabase database, IdMap <Guid> apiMap, IdMap <PackageIdentity> packageMap, BlockingCollection <PackageResults> queue) { try { using var usageWriter = database.CreateUsageWriter(); foreach (var(packageIdentity, logLines, apis) in queue.GetConsumingEnumerable()) { foreach (var line in logLines) { Console.WriteLine($"[Crawler] {line}"); } foreach (var api in apis) { if (!apiMap.Contains(api)) { continue; } var packageId = packageMap.GetId(packageIdentity); var apiId = apiMap.GetId(api); await usageWriter.WriteAsync(packageId, apiId); } } await usageWriter.SaveAsync(); Console.WriteLine("Output Worker has finished."); } catch (Exception ex) { Console.WriteLine("[Fatal] Output Worker crashed: " + ex); Environment.Exit(1); } }
internal uint GetTranslationId(string textId) => TranslationIds.GetId(textId);
public ILanguage GetLanguage(string textId) => Languages[LanguageIds.GetId(textId)];