static async Task RunDFrameControllerAsync(WebApplicationBuilder appBuilder, DFrameControllerOptions options, Action <WebHostBuilderContext, DFrameControllerOptions> configureOptions) { appBuilder.WebHost.ConfigureServices((WebHostBuilderContext ctx, IServiceCollection services) => { services.AddGrpc(); services.AddMagicOnion(x => { // Should use same options between DFrame.Controller(this) and DFrame.Worker x.SerializerOptions = MessagePackSerializerOptions.Standard; }); services.AddSingleton <IMagicOnionLogger, MagicOnionLogToLogger>(); services.AddRazorPages() .ConfigureApplicationPartManager(manager => { // import libraries razor pages var assembly = typeof(DFrameControllerWebApplicationBuilderExtensions).Assembly; var assemblyPart = new CompiledRazorAssemblyPart(assembly); manager.ApplicationParts.Add(assemblyPart); }); services.AddServerSideBlazor(); // DFrame Options services.TryAddSingleton <DFrameControllerExecutionEngine>(); services.TryAddSingleton <DFrameControllerLogBuffer>(); services.AddSingleton <ILoggerProvider, DFrameControllerLoggerProvider>(); services.AddScoped <LocalStorageAccessor>(); configureOptions(ctx, options); services.AddSingleton(options); // If user sets custom provdier, use it. services.TryAddSingleton <IExecutionResultHistoryProvider, InMemoryExecutionResultHistoryProvider>(); services.AddMessagePipe(); }); var app = appBuilder.Build(); app.UseStaticFiles(); app.UseRouting(); app.MapBlazorHub(); app.MapFallbackToPage("/_Host"); app.MapMagicOnionService(); DisplayConfiguration(app); if (!options.DisableRestApi) { RestApi.RegisterRestApi(app); } await app.RunAsync(); }
public SummarizedExecutionResult(WorkerId workerId, int workloadCount, Dictionary <string, string> metadata, DFrameControllerOptions options) { this.elapsedValues = new FixedSizeList <TimeSpan>(options.CompleteElapsedBufferCount); this.WorkerId = workerId; this.WorkloadCount = workloadCount; this.ExecutionStatus = ExecutionStatus.Running; this.Metadata = metadata; }
public static Task RunDFrameControllerAsync(this WebApplicationBuilder appBuilder, DFrameControllerOptions options) { return(RunDFrameControllerAsync(appBuilder, options, (_, __) => { })); }
public DFrameControllerLogBuffer(DFrameControllerOptions options) { ringBuffer = new ObservableFixedSizeRingBuffer <string>(options.ServerLogBufferCount); }