public ProjectionsSubsystem(ProjectionSubsystemOptions projectionSubsystemOptions) { if (projectionSubsystemOptions.RunProjections <= ProjectionType.System) { _projectionWorkerThreadCount = 1; } else { _projectionWorkerThreadCount = projectionSubsystemOptions.ProjectionWorkerThreadCount; } _runProjections = projectionSubsystemOptions.RunProjections; // Projection manager & Projection Core Coordinator // The manager only starts when projections are running _componentCount = _runProjections == ProjectionType.None ? 1 : 2; // Projection manager & each projection core worker _dispatcherCount = 1 + _projectionWorkerThreadCount; _startStandardProjections = projectionSubsystemOptions.StartStandardProjections; _projectionsQueryExpiry = projectionSubsystemOptions.ProjectionQueryExpiry; _faultOutOfOrderProjections = projectionSubsystemOptions.FaultOutOfOrderProjections; _leaderMainBus = new InMemoryBus("manager input bus"); _subsystemInitialized = 0; _projectionRuntime = projectionSubsystemOptions.Runtime; _executionTimeout = projectionSubsystemOptions.ExecutionTimeout; _compilationTimeout = projectionSubsystemOptions.CompilationTimeout; }
public ProjectionsStandardComponents( int projectionWorkerThreadCount, ProjectionType runProjections, IBus leaderOutputBus, IQueuedHandler leaderInputQueue, IBus leaderMainBus, bool faultOutOfOrderProjections, JavascriptProjectionRuntime projectionRuntime, int projectionCompilationTimeout, int projectionExecutionTimeout) { ProjectionWorkerThreadCount = projectionWorkerThreadCount; RunProjections = runProjections; LeaderOutputBus = leaderOutputBus; LeaderInputQueue = leaderInputQueue; LeaderMainBus = leaderMainBus; FaultOutOfOrderProjections = faultOutOfOrderProjections; ProjectionRuntime = projectionRuntime; ProjectionCompilationTimeout = projectionCompilationTimeout; ProjectionExecutionTimeout = projectionExecutionTimeout; }
public ProjectionStateHandlerFactory(TimeSpan javascriptCompilationTimeout, TimeSpan javascriptExecutionTimeout, JavascriptProjectionRuntime runtime) { _jsFactory = runtime switch { JavascriptProjectionRuntime.Legacy => (source, logger, cancelCallbackFactory, enableContentTypeValidation) => new DefaultV8ProjectionStateHandler(source, logger, cancelCallbackFactory, enableContentTypeValidation), JavascriptProjectionRuntime.Interpreted => (source, _, _, enableContentTypeValidation) => new JintProjectionStateHandler(source, enableContentTypeValidation, javascriptCompilationTimeout, javascriptExecutionTimeout), _ => throw new ArgumentOutOfRangeException(nameof(runtime), runtime, "Unknown javascript projection runtime") }; }