public async Task ConfigureServices(IServiceProvider serviceProvider) { IProjectionSubscriptionController controller = serviceProvider.GetRequiredService <IProjectionSubscriptionController>(); //IProjectionStreamSubscriptionController streamController = // serviceProvider.GetRequiredService<IProjectionStreamSubscriptionController>(); foreach (var i in _projections) { await controller.SubscribeHandlers(i, new ProjectionEventHandlerFactory(serviceProvider, i)); //await streamController.SubscribeHandlers(i, new ProjectionStreamEventHandlerFactory(serviceProvider, i)); // this will load checkpoints. } }
public DataPartitionStream(Guid partitionId, QueryEngine <TModel> engine, IProjectionSubscriptionController subscriptionController, IProjectionSchema schema, bool isRootPartition = false) { IsRootStream = isRootPartition; PartitionId = partitionId; _engine = engine; _subscriptionController = subscriptionController; _schema = schema; _associatedQueries = new ConcurrentDictionary <IQuery, ILiveQuery>(); _initTask = Initialize(); }
public QueryEngine(IServiceProvider serviceProvider, IQuerySchemaRegister querySchemaRegister, IProjectionSchemaRegister projectionSchemaRegister, IProjectionSubscriptionController subscriptionController) { _serviceProvider = serviceProvider; _querySchemaRegister = querySchemaRegister; _projectionSchemaRegister = projectionSchemaRegister; _subscriptionController = subscriptionController; _liveQueries = new ConcurrentDictionary <IQuery, ILiveQuery>(); _partitions = new ConcurrentDictionary <Guid, DataPartitionStream <TModel> >(); Log.Debug("QueryEngine for model {modelName} created.", typeof(TModel).Name); }