using Microsoft.Extensions.DependencyInjection; using Pole.Core; using Pole.Core.Processor; using Pole.Sagas.Server; using Pole.Sagas.Server.Processor; using System; using System.Collections.Generic; using System.Text; namespace Microsoft.Extensions.DependencyInjection { public static class PoleSagasServerServiceCollectionExtensions { public static StartupConfig AddSagasServer(this StartupConfig startupConfig, Action<PoleSagasServerOption> config = null) { Action<PoleSagasServerOption> defaultConfig = option => { }; var finalConfig = config ?? defaultConfig; startupConfig.Services.AddGrpc(); startupConfig.Services.Configure(finalConfig); startupConfig.Services.AddSingleton<IProcessor, NotEndedSagasFetchProcessor>(); startupConfig.Services.AddSingleton<ISagasBuffer, SagasBuffer>(); startupConfig.Services.AddSingleton<IProcessor, ExpiredSagasCollectorProcessor>(); startupConfig.Services.AddHostedService<BackgroundServiceBasedProcessorServer>(); return startupConfig; } } }