private async IAsyncEnumerable <T> Impl([EnumeratorCancellation] CancellationToken cancellationToken = default) { var updates = _context.GetNotifications(_delegateName).StreamParameterItemUpdates <T>( _streamName, _parameterName, cancellationToken); await foreach (var(_, item) in updates.WithCancellation(cancellationToken)) { yield return(item); } }
private async Task ListenAsync(CancellationToken cancellationToken) { var triggers = _context.GetNotifications(_delegateName).WorkerTriggers(cancellationToken); await foreach (var(streamName, workerName) in triggers.WithCancellation(cancellationToken)) { var triggerValue = new PerperModuleContext(streamName, _delegateName, workerName, _context); await _executor.TryExecuteAsync( new TriggeredFunctionData { TriggerValue = triggerValue }, cancellationToken); } }
private async Task ListenAsync(CancellationToken cancellationToken) { var executions = new List <Task>(); var triggers = _context.GetNotifications(_delegateName).StreamTriggers(cancellationToken); await foreach (var streamName in triggers.WithCancellation(cancellationToken)) { executions.Add(ExecuteAsync(streamName, cancellationToken)); } await Task.WhenAll(executions); }
private async Task ListenAsync(CancellationToken cancellationToken) { var triggers = _context.GetNotifications(_delegateName).WorkerTriggers(cancellationToken); await foreach (var(streamName, workerName) in triggers.WithCancellation(cancellationToken)) { var triggerValue = new PerperWorkerContext { StreamName = streamName, WorkerName = workerName }; await _executor.TryExecuteAsync( new TriggeredFunctionData { TriggerValue = _triggerValueConverter.Convert(triggerValue) }, cancellationToken); } }
public async Task <T> CallWorkerAsync <T>(string name, object parameters, CancellationToken cancellationToken) { var data = _context.GetData(StreamName); var workerName = await data.CallWorkerAsync(GenerateName(name), name, DelegateName, parameters); var notifications = _context.GetNotifications(DelegateName); await foreach (var _ in notifications.WorkerResultSubmissions(StreamName, workerName, cancellationToken)) { return(await data.ReceiveWorkerResultAsync <T>(workerName)); } throw new TimeoutException(); }