public static async Task RunAsync([PerperStreamTrigger] PerperStreamContext context, [Perper("generator")] IAsyncEnumerable <Data> generator, [Perper("multiplier")] int multiplier, [Perper("output")] IAsyncCollector <Data> output, ILogger logger, CancellationToken cancellationToken) { var state = await context.FetchStateAsync <List <int> >() ?? new List <int>(); int counter = 0; await foreach (var data in generator.WithCancellation(cancellationToken)) { var value = data.Value; logger.LogInformation($"Processor is processing value: {value}"); var result = await context.CallWorkerAsync <int>(typeof(Worker), new { value, multiplier, state }, cancellationToken); state.Add(result); await context.UpdateStateAsync(state); await output.AddAsync(new Data { Value = result, Description = $"Description {result}" }, cancellationToken); counter++; if (counter > 4) { var iquery = context.Query <Data>(generator).Where(item => item.Value > 100); foreach (var item in iquery.ToList()) { logger.LogInformation($"LINQ Query (Where): Received odd item with value: {item.Value}"); } } } }
public async Task Run([PerperStreamTrigger] PerperStreamContext context, [Perper("chains")] Dictionary <Guid, Chain> chains, [Perper("ibc")] IAsyncEnumerable <Message <Hash> > ibc, [Perper("gossips")] IAsyncEnumerable <Gossip <Hash> > gossips, [Perper("hashRegistry")] IPerperStream hashRegistry, [Perper("output")] IAsyncCollector <object> output, CancellationToken cancellationToken) { _hashRegistry = context.Query <HashRegistryEntry>(hashRegistry); _output = output; foreach (var(chainId, chain) in chains) { var executor = new Executor(chainId, async(worker, input) => await context.CallWorkerAsync <(byte[]?, (string, object[])[], Dictionary <Guid, string[]>, Dictionary <Guid, string>)>(worker, new { input }, default));
public async Task Run([PerperStreamTrigger] PerperStreamContext context, [Perper("enumerated")] IAsyncEnumerable <Message> enumerated, [Perper("filtered")] IAsyncEnumerable <Message> filtered, [Perper("queried")] IPerperStream[] queried, [Perper("i")] int i, [Perper("n")] int n, [Perper("output")] IAsyncCollector <Message> output) { await Task.WhenAll( ProcessEnumerated(i, enumerated), ProcessFiltered(i, filtered), ProcessQueried(i, queried.Select(stream => context.Query <Message>(stream))), SendOutput(i, n, output) ); }
public async Task Run([PerperStreamTrigger] PerperStreamContext context, [Perper("node")] Node node, [Perper("chainData")] Chain chainData, [Perper("consensus")] IAsyncEnumerable <Message <Hash> > consensus, [Perper("filter")] IAsyncEnumerable <Hash> filter, [Perper("queries")] IAsyncEnumerable <Query <Hash> > queries, [Perper("hashRegistry")] IPerperStream hashRegistry, [Perper("output")] IAsyncCollector <Message <Hash> > output, CancellationToken cancellationToken) { _output = output; _node = node; _hashRegistry = context.Query <HashRegistryEntry>(hashRegistry); var executor = new Executor(_node !.ChainId, async(worker, input) => await context.CallWorkerAsync <(byte[]?, (string, object[])[], Dictionary <Guid, string[]>, Dictionary <Guid, string>)>(worker, new { input }, default));