public static Task Main(string[] args) { var oskSettings = new OskSettings(); var siloSettings = new SiloSettings(); var configuration = new ConfigurationBuilder() .AddJsonFile("appsettings.json", true, true) .Build(); configuration.GetSection("OskSettings").Bind(oskSettings); configuration.GetSection("SiloSettings").Bind(siloSettings); if (siloSettings.MaxCpuLoad < 100) { Task.Run(() => CpuOptimizer.Start(siloSettings.MaxCpuLoad, new CancellationToken())); } return(new HostBuilder() .UseOrleans(builder => { builder.UseLocalhostClustering() .ConfigureServices(services => { services.AddMongoUtils(); services.AddSingleton(oskSettings); services.AddSingleton(siloSettings); services.AddScoped <IAsyncLogger, NLogLogger>(); services.AddSingleton <IAssemblyCache, MemoryAssemblyCache>(); services.AddSingleton <IAssemblyMembersCache, MemoryAssemblyMembersCache>(); }) .Configure((Action <SchedulingOptions>)(options => options.AllowCallChainReentrancy = false)) .Configure((Action <ClusterOptions>)(options => { options.ClusterId = oskSettings.ClusterId; options.ServiceId = oskSettings.ServiceId; })) .Configure((Action <EndpointOptions>)(options => options.AdvertisedIPAddress = IpUtils.IpAddress())) .ConfigureApplicationParts(parts => AddParts(parts, siloSettings).WithReferences()) .UseDashboard(options => { options.Host = "*"; options.Port = 8080; options.HostSelf = true; options.CounterUpdateIntervalMs = 1000; }) .AddMemoryGrainStorage(name: "StatisticsGrainStorage") .AddSimpleMessageStreamProvider("OSKProvider", c => c.OptimizeForImmutableData = true); }) .ConfigureLogging(builder => builder.AddConsole()) .RunConsoleAsync()); }
public MongoUtils(OskSettings settings) => _settings = settings;
public TarantoolUtils(OskSettings settings) => _settings = settings;
public RDMSUtils(OskSettings settings) => _settings = settings;