public Task RegisteringAndProcessing() { return(Task.WhenAll(_eventHandlersToRun.Select(eventHandler => _eventHandlers.RegisterAndStart( eventHandler, (_, _) => _dispatcher.Object.Reject(new EventHandlerRegistrationResponse(), CancellationToken.None), CancellationToken.None)))); }
/// <inheritdoc/> public override async Task Connect( IAsyncStreamReader <EventHandlerClientToRuntimeMessage> runtimeStream, IServerStreamWriter <EventHandlerRuntimeToClientMessage> clientStream, ServerCallContext context) { _logger.ConnectingEventHandler(); using var cts = CancellationTokenSource.CreateLinkedTokenSource(_hostApplicationLifetime.ApplicationStopping, context.CancellationToken); try { var connectResult = await _reverseCallServices.Connect(runtimeStream, clientStream, context, _eventHandlersProtocol, cts.Token).ConfigureAwait(false); if (!connectResult.Success) { return; } using var dispatcher = connectResult.Result.dispatcher; var arguments = connectResult.Result.arguments; using var eventHandler = _configuration.Value.Fast ? _eventHandlerFactory.CreateFast(arguments, _configuration.Value.ImplicitFilter, dispatcher, context.CancellationToken) : _eventHandlerFactory.Create(arguments, dispatcher, context.CancellationToken); await _eventHandlers.RegisterAndStart( eventHandler, (failure, cancellation) => dispatcher.Reject(new EventHandlerRegistrationResponse { Failure = failure.ToProtobuf() }, cancellation), cts.Token).ConfigureAwait(false); } finally { cts.Cancel(); } }