public void Json_rpc_channel_has_max_capacity() { JsonRpcNdmConsumerChannel channel = new JsonRpcNdmConsumerChannel(LimboLogs.Instance); for (int i = 0; i < JsonRpcNdmConsumerChannel.MaxCapacity + 1; i++) { channel.PublishAsync(Keccak.Zero, "client", "data"); } for (int i = 0; i < JsonRpcNdmConsumerChannel.MaxCapacity; i++) { channel.Pull(Keccak.Zero).Should().NotBeNull(); } channel.Pull(Keccak.Zero).Should().BeNull(); }
public INdmServices Init(NdmRequiredServices services) { AddDecoders(); var config = services.NdmConfig; var providerAddress = string.IsNullOrWhiteSpace(config.ProviderAddress) ? Address.Zero : new Address(config.ProviderAddress); var consumerAddress = string.IsNullOrWhiteSpace(config.ConsumerAddress) ? Address.Zero : new Address(config.ConsumerAddress); var contractAddress = string.IsNullOrWhiteSpace(config.ContractAddress) ? Address.Zero : new Address(config.ContractAddress); UnlockHardcodedAccounts(providerAddress, consumerAddress, services.Wallet); var logManager = services.LogManager; var readOnlyTree = new ReadOnlyBlockTree(services.BlockTree); var readOnlyDbProvider = new ReadOnlyDbProvider(services.RocksProvider, false); var readOnlyTxProcessingEnv = new ReadOnlyTxProcessingEnv(readOnlyDbProvider, readOnlyTree, services.SpecProvider, logManager); var blockchainBridge = new BlockchainBridge( readOnlyTxProcessingEnv.StateReader, readOnlyTxProcessingEnv.StateProvider, readOnlyTxProcessingEnv.StorageProvider, readOnlyTxProcessingEnv.BlockTree, services.TransactionPool, services.ReceiptStorage, services.FilterStore, services.FilterManager, services.Wallet, readOnlyTxProcessingEnv.TransactionProcessor, services.Ecdsa); var dataAssetRlpDecoder = new DataAssetDecoder(); var encoder = new AbiEncoder(); var depositService = new DepositService(blockchainBridge, services.TransactionPool, encoder, services.Wallet, contractAddress, logManager); var ndmConsumerChannelManager = services.NdmConsumerChannelManager; var ndmDataPublisher = services.NdmDataPublisher; var jsonRpcNdmConsumerChannel = new JsonRpcNdmConsumerChannel(); // ndmConsumerChannelManager.Add(jsonRpcNdmConsumerChannel); return(new Services(services, new NdmCreatedServices(consumerAddress, encoder, dataAssetRlpDecoder, depositService, ndmDataPublisher, jsonRpcNdmConsumerChannel, ndmConsumerChannelManager, blockchainBridge))); }
public static IServices Init(RequiredServices services) { AddDecoders(); var config = services.NdmConfig; var providerAddress = string.IsNullOrWhiteSpace(config.ProviderAddress) ? Address.Zero : new Address(config.ProviderAddress); var consumerAddress = string.IsNullOrWhiteSpace(config.ConsumerAddress) ? Address.Zero : new Address(config.ConsumerAddress); UnlockHardcodedAccounts(providerAddress, consumerAddress, services.Wallet); var readOnlyDbProvider = new ReadOnlyDbProvider(services.RocksProvider, false); var filterStore = new FilterStore(); var filterManager = new FilterManager(filterStore, services.BlockProcessor, services.TransactionPool, services.LogManager); var state = new RpcState(services.BlockTree, services.SpecProvider, readOnlyDbProvider, services.LogManager); var blockchainBridge = new BlockchainBridge( state.StateReader, state.StateProvider, state.StorageProvider, state.BlockTree, services.TransactionPool, services.TransactionPoolInfoProvider, services.ReceiptStorage, filterStore, filterManager, services.Wallet, state.TransactionProcessor, services.Ecdsa); var dataHeaderRlpDecoder = new DataHeaderDecoder(); var encoder = new AbiEncoder(); var depositService = new DepositService(blockchainBridge, encoder, services.Wallet, config, LimboLogs.Instance); var ndmConsumerChannelManager = services.NdmConsumerChannelManager; var ndmDataPublisher = services.NdmDataPublisher; var jsonRpcNdmConsumerChannel = new JsonRpcNdmConsumerChannel(); // ndmConsumerChannelManager.Add(jsonRpcNdmConsumerChannel); return(new Services(services, new CreatedServices(consumerAddress, encoder, dataHeaderRlpDecoder, depositService, ndmDataPublisher, jsonRpcNdmConsumerChannel, ndmConsumerChannelManager, blockchainBridge))); }
public INdmServices Init(NdmRequiredServices services) { AddDecoders(); var config = services.NdmConfig; var consumerAddress = string.IsNullOrWhiteSpace(config.ConsumerAddress) ? Address.Zero : new Address(config.ConsumerAddress); var contractAddress = string.IsNullOrWhiteSpace(config.ContractAddress) ? Address.Zero : new Address(config.ContractAddress); var configId = config.Id; var configManager = services.ConfigManager; var logManager = services.LogManager; var timestamper = services.Timestamper; var wallet = services.Wallet; var readOnlyTree = new ReadOnlyBlockTree(services.BlockTree); var readOnlyDbProvider = new ReadOnlyDbProvider(services.RocksProvider, false); var readOnlyTxProcessingEnv = new ReadOnlyTxProcessingEnv(readOnlyDbProvider, readOnlyTree, services.SpecProvider, logManager); var jsonRpcConfig = services.ConfigProvider.GetConfig <IJsonRpcConfig>(); var blockchainBridge = new BlockchainBridge( readOnlyTxProcessingEnv.StateReader, readOnlyTxProcessingEnv.StateProvider, readOnlyTxProcessingEnv.StorageProvider, readOnlyTxProcessingEnv.BlockTree, services.TransactionPool, services.ReceiptFinder, services.FilterStore, services.FilterManager, wallet, readOnlyTxProcessingEnv.TransactionProcessor, services.Ecdsa, services.BloomStorage, logManager, false, jsonRpcConfig.FindLogBlockDepthLimit); var dataAssetRlpDecoder = new DataAssetDecoder(); var encoder = new AbiEncoder(); INdmBlockchainBridge ndmBlockchainBridge; if (config.ProxyEnabled) { if (config.JsonRpcUrlProxies == null || services.EthJsonRpcClientProxy == null) { throw new InvalidDataException("JSON RPC proxy is enabled but the proxies were not initialized properly."); } services.JsonRpcClientProxy !.SetUrls(config.JsonRpcUrlProxies !); ndmBlockchainBridge = new NdmBlockchainBridgeProxy(services.EthJsonRpcClientProxy); } else { ndmBlockchainBridge = new NdmBlockchainBridge(blockchainBridge, services.TransactionPool); } var gasPriceService = new GasPriceService(services.HttpClient, configManager, configId, timestamper, logManager); var transactionService = new TransactionService(ndmBlockchainBridge, wallet, configManager, configId, logManager); var depositService = new DepositService(ndmBlockchainBridge, encoder, wallet, contractAddress); var ndmConsumerChannelManager = services.NdmConsumerChannelManager; var ndmDataPublisher = services.NdmDataPublisher; var jsonRpcNdmConsumerChannel = new JsonRpcNdmConsumerChannel(logManager); if (config.JsonRpcDataChannelEnabled) { ndmConsumerChannelManager.Add(jsonRpcNdmConsumerChannel); } return(new Services(services, new NdmCreatedServices(consumerAddress, encoder, dataAssetRlpDecoder, depositService, gasPriceService, transactionService, ndmDataPublisher, jsonRpcNdmConsumerChannel, ndmConsumerChannelManager, ndmBlockchainBridge))); }
public INdmServices Init(NdmRequiredServices services) { AddDecoders(); var config = services.NdmConfig; var consumerAddress = string.IsNullOrWhiteSpace(config.ConsumerAddress) ? Address.Zero : new Address(config.ConsumerAddress); var contractAddress = string.IsNullOrWhiteSpace(config.ContractAddress) ? Address.Zero : new Address(config.ContractAddress); var configId = config.Id; var configManager = services.ConfigManager; var logManager = services.LogManager; var timestamper = services.Timestamper; var wallet = services.Wallet; var readOnlyTree = new ReadOnlyBlockTree(services.BlockTree); var readOnlyDbProvider = new ReadOnlyDbProvider(services.RocksProvider, false); var readOnlyTxProcessingEnv = new ReadOnlyTxProcessingEnv(readOnlyDbProvider, readOnlyTree, services.SpecProvider, logManager); var blockchainBridge = new BlockchainBridge( readOnlyTxProcessingEnv.StateReader, readOnlyTxProcessingEnv.StateProvider, readOnlyTxProcessingEnv.StorageProvider, readOnlyTxProcessingEnv.BlockTree, services.TransactionPool, services.ReceiptStorage, services.FilterStore, services.FilterManager, wallet, readOnlyTxProcessingEnv.TransactionProcessor, services.Ecdsa); var dataAssetRlpDecoder = new DataAssetDecoder(); var encoder = new AbiEncoder(); INdmBlockchainBridge ndmBlockchainBridge; if (config.ProxyEnabled) { services.JsonRpcClientProxy.SetUrls(config.JsonRpcUrlProxies); ndmBlockchainBridge = new NdmBlockchainBridgeProxy(services.EthJsonRpcClientProxy); } else { ndmBlockchainBridge = new NdmBlockchainBridge(blockchainBridge, services.TransactionPool); } var gasPriceService = new GasPriceService(services.HttpClient, configManager, configId, timestamper, logManager); var transactionService = new TransactionService(ndmBlockchainBridge, wallet, configManager, configId, logManager); var depositService = new DepositService(ndmBlockchainBridge, encoder, wallet, contractAddress); var ndmConsumerChannelManager = services.NdmConsumerChannelManager; var ndmDataPublisher = services.NdmDataPublisher; var jsonRpcNdmConsumerChannel = new JsonRpcNdmConsumerChannel(); // ndmConsumerChannelManager.Add(jsonRpcNdmConsumerChannel); return(new Services(services, new NdmCreatedServices(consumerAddress, encoder, dataAssetRlpDecoder, depositService, gasPriceService, transactionService, ndmDataPublisher, jsonRpcNdmConsumerChannel, ndmConsumerChannelManager, ndmBlockchainBridge))); }