public BitcoinDWaiters( AddressPoolServiceAccessor addressPool, NBXplorerNetworkProvider networkProvider, ChainProvider chains, RepositoryProvider repositoryProvider, ExplorerConfiguration config, RPCClientProvider rpcProvider, EventAggregator eventAggregator) { _Waiters = networkProvider .GetAll() .Select(s => (Repository: repositoryProvider.GetRepository(s), RPCClient: rpcProvider.GetRPCClient(s), Chain: chains.GetChain(s), Network: s)) .Where(s => s.Repository != null && s.RPCClient != null && s.Chain != null) .Select(s => new BitcoinDWaiter(s.RPCClient, config, networkProvider.GetFromCryptoCode(s.Network.CryptoCode), s.Chain, s.Repository, addressPool.Instance, eventAggregator)) .ToDictionary(s => s.Network.CryptoCode, s => s); this.repositoryProvider = repositoryProvider; }
public RebroadcasterHostedService( NBXplorerNetworkProvider networkProvider, ExplorerConfiguration configuration, RepositoryProvider repositories, BitcoinDWaiters waiters, EventAggregator eventAggregator) { _Repositories = repositories; _Waiters = waiters; EventAggregator = eventAggregator; _BroadcastedTransactionsByCryptoCode = configuration.ChainConfigurations .Select(r => new RebroadcastedTransactions() { Network = networkProvider.GetFromCryptoCode(r.CryptoCode) }).ToDictionary(t => t.Network); }
public BitcoinDWaiters( AddressPoolService addressPool, NBXplorerNetworkProvider networkProvider, ChainProvider chains, RepositoryProvider repositoryProvider, ExplorerConfiguration config, RPCClientProvider rpcProvider, EventAggregator eventAggregator) { this.addressPool = addressPool; this.networkProvider = networkProvider; this.chains = chains; this.repositoryProvider = repositoryProvider; this.config = config; this.rpcProvider = rpcProvider; this.eventAggregator = eventAggregator; }
public RepositoryProvider(NBXplorerNetworkProvider networks, KeyPathTemplates keyPathTemplates, ExplorerConfiguration configuration) { this.keyPathTemplates = keyPathTemplates; _Configuration = configuration; var directory = Path.Combine(configuration.DataDir, "db"); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } int tried = 0; retry: try { _Engine = new DBriizeEngine(new DBriizeConfiguration() { DBriizeDataFolderName = directory }); } catch when(tried < 10) { tried++; Thread.Sleep(tried * 500); goto retry; } foreach (var net in networks.GetAll()) { var settings = GetChainSetting(net); if (settings != null) { var repo = net.NBitcoinNetwork.NetworkSet == Liquid.Instance ? new LiquidRepository(_Engine, net, keyPathTemplates, settings.RPC) : new Repository(_Engine, net, keyPathTemplates, settings.RPC); repo.MaxPoolSize = configuration.MaxGapSize; repo.MinPoolSize = configuration.MinGapSize; repo.MinUtxoValue = settings.MinUtxoValue; _Repositories.Add(net.CryptoCode, repo); } } }
public AddressPoolService(NBXplorerNetworkProvider networks, RepositoryProvider repositoryProvider, KeyPathTemplates keyPathTemplates, AddressPoolServiceAccessor accessor) { accessor.Instance = this; _AddressPoolByNetwork = networks.GetAll().ToDictionary(o => o, o => new AddressPool(repositoryProvider.GetRepository(o))); this.keyPathTemplates = keyPathTemplates; }
public AddressPoolService(NBXplorerNetworkProvider networks, RepositoryProvider repositoryProvider, KeyPathTemplates keyPathTemplates) { this.networks = networks; this.repositoryProvider = repositoryProvider; this.keyPathTemplates = keyPathTemplates; }