public async Task <IStreamProcessorAggregate <TIn, TOut> > CreateSimpleSelectMany <TIn, TOut>(Expression <Func <TIn, IEnumerable <TOut> > > selectionFunc, StreamProcessorAggregateConfiguration configuration)
        {
            var processorAggregate = _grainFactory.GetGrain <IStreamProcessorSimpleSelectManyAggregate <TIn, TOut> >(Guid.NewGuid());

            await processorAggregate.SetFunction(selectionFunc);

            await processorAggregate.SetInput(configuration.InputStreams);

            return(processorAggregate);
        }
 public Task <IStreamProcessorAggregate <TIn, TOut> > CreateSelectMany <TIn, TIntermediate, TOut>(Expression <Func <TIn, IEnumerable <TIntermediate> > > collectionSelectorFunc, Expression <Func <TIn, TIntermediate, TOut> > resultSelectorFunc, StreamProcessorAggregateConfiguration configuration)
 {
     throw new NotImplementedException();
 }
        public async Task <IStreamProcessorAggregate <TIn, TIn> > CreateWhere <TIn>(Expression <Func <TIn, bool> > filterFunc, StreamProcessorAggregateConfiguration configuration)
        {
            var processorAggregate = _grainFactory.GetGrain <IStreamProcessorWhereAggregate <TIn> >(Guid.NewGuid());

            await processorAggregate.SetFunction(filterFunc);

            await processorAggregate.SetInput(configuration.InputStreams);

            return(processorAggregate);
        }