public EthereumRunner(IRpcModuleProvider rpcModuleProvider, IConfigProvider configurationProvider, ILogManager logManager, IGrpcServer grpcServer, INdmConsumerChannelManager ndmConsumerChannelManager, INdmDataPublisher ndmDataPublisher, INdmInitializer ndmInitializer, IWebSocketsManager webSocketsManager, IJsonSerializer ethereumJsonSerializer) { _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _grpcServer = grpcServer; _ndmConsumerChannelManager = ndmConsumerChannelManager; _ndmDataPublisher = ndmDataPublisher; _ndmInitializer = ndmInitializer; _webSocketsManager = webSocketsManager; _ethereumJsonSerializer = ethereumJsonSerializer; _logger = _logManager.GetClassLogger(); InitRlp(); _configProvider = configurationProvider ?? throw new ArgumentNullException(nameof(configurationProvider)); _rpcModuleProvider = rpcModuleProvider ?? throw new ArgumentNullException(nameof(rpcModuleProvider)); _initConfig = configurationProvider.GetConfig <IInitConfig>(); _txPoolConfig = configurationProvider.GetConfig <ITxPoolConfig>(); _perfService = new PerfService(_logManager); _networkConfig = _configProvider.GetConfig <INetworkConfig>(); _ipResolver = new IpResolver(_networkConfig, _logManager); _networkConfig.ExternalIp = _ipResolver.ExternalIp.ToString(); _networkConfig.LocalIp = _ipResolver.LocalIp.ToString(); }
public EthereumRunner(IRpcModuleProvider rpcModuleProvider, IConfigProvider configurationProvider, ILogManager logManager, IGrpcService grpcService, IGrpcClient grpcClient, INdmConsumerChannelManager ndmConsumerChannelManager, INdmDataPublisher ndmDataPublisher, INdmInitializer ndmInitializer) { _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _grpcService = grpcService; _grpcClient = grpcClient; _ndmConsumerChannelManager = ndmConsumerChannelManager; _ndmDataPublisher = ndmDataPublisher; _ndmInitializer = ndmInitializer; _logger = _logManager.GetClassLogger(); InitRlp(); _configProvider = configurationProvider ?? throw new ArgumentNullException(nameof(configurationProvider)); _rpcModuleProvider = rpcModuleProvider ?? throw new ArgumentNullException(nameof(rpcModuleProvider)); _initConfig = configurationProvider.GetConfig <IInitConfig>(); _txPoolConfig = configurationProvider.GetConfig <ITxPoolConfig>(); _perfService = new PerfService(_logManager); _networkHelper = new NetworkHelper(_logger); }
protected async Task StartRunners(IConfigProvider configProvider) { IInitConfig initConfig = configProvider.GetConfig <IInitConfig>(); IJsonRpcConfig jsonRpcConfig = configProvider.GetConfig <IJsonRpcConfig>(); var metricsParams = configProvider.GetConfig <IMetricsConfig>(); var logManager = new NLogManager(initConfig.LogFileName, initConfig.LogDirectory); IRpcModuleProvider rpcModuleProvider = jsonRpcConfig.Enabled ? new RpcModuleProvider(configProvider.GetConfig <IJsonRpcConfig>(), logManager) : (IRpcModuleProvider)NullModuleProvider.Instance; var jsonSerializer = new EthereumJsonSerializer(); var webSocketsManager = new WebSocketsManager(); INdmDataPublisher ndmDataPublisher = null; INdmConsumerChannelManager ndmConsumerChannelManager = null; INdmInitializer ndmInitializer = null; var ndmConfig = configProvider.GetConfig <INdmConfig>(); var ndmEnabled = ndmConfig.Enabled; if (ndmEnabled) { ndmDataPublisher = new NdmDataPublisher(); ndmConsumerChannelManager = new NdmConsumerChannelManager(); var initializerName = ndmConfig.InitializerName; if (Logger.IsInfo) { Logger.Info($"NDM initializer: {initializerName}"); } var ndmInitializerType = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(a => a.GetTypes()) .FirstOrDefault(t => t.GetCustomAttribute <NdmInitializerAttribute>()?.Name == initializerName); var ndmModule = new NdmModule(); var ndmConsumersModule = new NdmConsumersModule(); ndmInitializer = new NdmInitializerFactory(ndmInitializerType, ndmModule, ndmConsumersModule, logManager).CreateOrFail(); } var grpcConfig = configProvider.GetConfig <IGrpcConfig>(); GrpcServer grpcServer = null; if (grpcConfig.Enabled) { grpcServer = new GrpcServer(jsonSerializer, logManager); if (ndmEnabled) { ndmConsumerChannelManager.Add(new GrpcNdmConsumerChannel(grpcServer)); } _grpcRunner = new GrpcRunner(grpcServer, grpcConfig, logManager); await _grpcRunner.Start().ContinueWith(x => { if (x.IsFaulted && Logger.IsError) { Logger.Error("Error during GRPC runner start", x.Exception); } }); } if (initConfig.WebSocketsEnabled) { if (ndmEnabled) { webSocketsManager.AddModule(new NdmWebSocketsModule(ndmConsumerChannelManager, ndmDataPublisher, jsonSerializer)); } } _ethereumRunner = new EthereumRunner(rpcModuleProvider, configProvider, logManager, grpcServer, ndmConsumerChannelManager, ndmDataPublisher, ndmInitializer, webSocketsManager, jsonSerializer); await _ethereumRunner.Start().ContinueWith(x => { if (x.IsFaulted && Logger.IsError) { Logger.Error("Error during ethereum runner start", x.Exception); } }); if (jsonRpcConfig.Enabled) { rpcModuleProvider.Register(new SingletonModulePool <IWeb3Module>(new Web3Module(logManager))); var jsonRpcService = new JsonRpcService(rpcModuleProvider, logManager); var jsonRpcProcessor = new JsonRpcProcessor(jsonRpcService, jsonSerializer, logManager); if (initConfig.WebSocketsEnabled) { webSocketsManager.AddModule(new JsonRpcWebSocketsModule(jsonRpcProcessor, jsonSerializer)); } Bootstrap.Instance.JsonRpcService = jsonRpcService; Bootstrap.Instance.LogManager = logManager; Bootstrap.Instance.JsonSerializer = jsonSerializer; _jsonRpcRunner = new JsonRpcRunner(configProvider, rpcModuleProvider, logManager, jsonRpcProcessor, webSocketsManager); await _jsonRpcRunner.Start().ContinueWith(x => { if (x.IsFaulted && Logger.IsError) { Logger.Error("Error during jsonRpc runner start", x.Exception); } }); } else { if (Logger.IsInfo) { Logger.Info("Json RPC is disabled"); } } if (metricsParams.Enabled) { var intervalSeconds = metricsParams.IntervalSeconds; _monitoringService = new MonitoringService(new MetricsUpdater(intervalSeconds), metricsParams.PushGatewayUrl, ClientVersion.Description, metricsParams.NodeName, intervalSeconds, logManager); await _monitoringService.StartAsync().ContinueWith(x => { if (x.IsFaulted && Logger.IsError) { Logger.Error("Error during starting a monitoring.", x.Exception); } }); } else { if (Logger.IsInfo) { Logger.Info("Monitoring is disabled"); } } }
protected async Task StartRunners(IConfigProvider configProvider) { var initParams = configProvider.GetConfig <IInitConfig>(); var metricsParams = configProvider.GetConfig <IMetricsConfig>(); var logManager = new NLogManager(initParams.LogFileName, initParams.LogDirectory); IRpcModuleProvider rpcModuleProvider = initParams.JsonRpcEnabled ? new RpcModuleProvider(configProvider.GetConfig <IJsonRpcConfig>()) : (IRpcModuleProvider)NullModuleProvider.Instance; var webSocketsManager = new WebSocketsManager(); INdmDataPublisher ndmDataPublisher = null; INdmConsumerChannelManager ndmConsumerChannelManager = null; INdmInitializer ndmInitializer = null; var ndmConfig = configProvider.GetConfig <INdmConfig>(); var ndmEnabled = ndmConfig.Enabled; if (ndmEnabled) { ndmDataPublisher = new NdmDataPublisher(); ndmConsumerChannelManager = new NdmConsumerChannelManager(); ndmInitializer = new NdmInitializerFactory(logManager) .CreateOrFail(ndmConfig.InitializerName, ndmConfig.PluginsPath); } var grpcConfig = configProvider.GetConfig <IGrpcConfig>(); GrpcService grpcService = null; if (grpcConfig.Enabled) { grpcService = new GrpcService(logManager); if (ndmEnabled) { ndmConsumerChannelManager.Add(new GrpcNdmConsumerChannel(grpcService)); } _grpcRunner = new GrpcRunner(grpcService, grpcConfig, logManager); await _grpcRunner.Start().ContinueWith(x => { if (x.IsFaulted && Logger.IsError) { Logger.Error("Error during GRPC runner start", x.Exception); } }); } GrpcClient grpcClient = null; var grpcClientConfig = configProvider.GetConfig <IGrpcClientConfig>(); if (grpcClientConfig.Enabled) { grpcClient = new GrpcClient(grpcClientConfig, new EthereumJsonSerializer(), logManager); _grpcClientRunner = new GrpcClientRunner(grpcClient, grpcClientConfig, logManager); await Task.Factory.StartNew(() => _grpcClientRunner.Start().ContinueWith(x => { if (x.IsFaulted && Logger.IsError) { Logger.Error("Error during GRPC client runner start", x.Exception); } })); } _ethereumRunner = new EthereumRunner(rpcModuleProvider, configProvider, logManager, grpcService, grpcClient, ndmConsumerChannelManager, ndmDataPublisher, ndmInitializer); await _ethereumRunner.Start().ContinueWith(x => { if (x.IsFaulted && Logger.IsError) { Logger.Error("Error during ethereum runner start", x.Exception); } }); if (initParams.JsonRpcEnabled) { var serializer = new EthereumJsonSerializer(); rpcModuleProvider.Register <IWeb3Module>(new Web3Module(logManager)); var jsonRpcService = new JsonRpcService(rpcModuleProvider, logManager); var jsonRpcProcessor = new JsonRpcProcessor(jsonRpcService, serializer, logManager); webSocketsManager.AddModule(new JsonRpcWebSocketsModule(jsonRpcProcessor, serializer)); if (ndmEnabled) { webSocketsManager.AddModule(new NdmWebSocketsModule(ndmConsumerChannelManager, ndmDataPublisher)); } Bootstrap.Instance.JsonRpcService = jsonRpcService; Bootstrap.Instance.LogManager = logManager; Bootstrap.Instance.JsonSerializer = serializer; _jsonRpcRunner = new JsonRpcRunner(configProvider, rpcModuleProvider, logManager, jsonRpcProcessor, webSocketsManager); await _jsonRpcRunner.Start().ContinueWith(x => { if (x.IsFaulted && Logger.IsError) { Logger.Error("Error during jsonRpc runner start", x.Exception); } }); } else { if (Logger.IsInfo) { Logger.Info("Json RPC is disabled"); } } if (metricsParams.MetricsEnabled) { var intervalSeconds = metricsParams.MetricsIntervalSeconds; _monitoringService = new MonitoringService(new MetricsUpdater(intervalSeconds), metricsParams.MetricsPushGatewayUrl, ClientVersion.Description, metricsParams.NodeName, intervalSeconds, logManager); await _monitoringService.StartAsync().ContinueWith(x => { if (x.IsFaulted && Logger.IsError) { Logger.Error("Error during starting a monitoring.", x.Exception); } }); } else { if (Logger.IsInfo) { Logger.Info("Monitoring is disabled"); } } }