public async Task Execute(CancellationToken cancellationToken) { IGrpcConfig grpcConfig = _api.Config <IGrpcConfig>(); if (grpcConfig.Enabled) { ILogger logger = _api.LogManager.GetClassLogger(); GrpcServer grpcServer = new GrpcServer(_api.EthereumJsonSerializer, _api.LogManager); var grpcRunner = new GrpcRunner(grpcServer, grpcConfig, _api.LogManager); await grpcRunner.Start(cancellationToken).ContinueWith(x => { if (x.IsFaulted && logger.IsError) { logger.Error("Error during GRPC runner start", x.Exception); } }); _api.GrpcServer = grpcServer; GrpcPublisher grpcPublisher = new GrpcPublisher(_api.GrpcServer); _api.Publishers.Add(grpcPublisher); _api.DisposeStack.Push(grpcPublisher); _api.DisposeStack.Push(Disposable.Create(() => grpcRunner.StopAsync())); // do not await } }
public GrpcLoggerFactory(GrpcPublisher publisher) { _publisher = publisher; }