public void UnregisterExecutionServices(ulong accountId) { if (_statePersistencyItems.ContainsKey(accountId)) { StatePersistency persistency = _statePersistencyItems[accountId]; persistency.CancellationTokenSource.Cancel(); persistency.WalletSynchronizer.Dispose(); _statePersistencyItems.Remove(accountId); persistency.TransactionsService = null; persistency.WalletSynchronizer = null; persistency.ClientCryptoService = null; } else if (_utxoPersistencyItems.ContainsKey(accountId)) { UtxoPersistency persistency = _utxoPersistencyItems[accountId]; persistency.CancellationTokenSource.Cancel(); persistency.WalletSynchronizer.Dispose(); _utxoPersistencyItems.Remove(accountId); persistency.TransactionsService = null; persistency.WalletSynchronizer = null; persistency.ClientCryptoService = null; } }
public void InitializeStateExecutionServices(ulong accountId, byte[] secretKey) { if (_statePersistencyItems.ContainsKey(accountId)) { return; } IPacketsProvider packetsProvider = ServiceLocator.Current.GetInstance <IPacketsProvider>(); IStateTransactionsService transactionsService = ServiceLocator.Current.GetInstance <StateTransactionsService>(); IStateClientCryptoService clientCryptoService = ServiceLocator.Current.GetInstance <StateClientCryptoService>(); IWalletSynchronizer walletSynchronizer = ServiceLocator.Current.GetInstance <StateWalletSynchronizer>(); CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); packetsProvider.Initialize(accountId, cancellationTokenSource.Token); clientCryptoService.Initialize(secretKey); transactionsService.Initialize(clientCryptoService, _gatewayService.GetLastBlockHeight(ConfidentialAssetsHelper.GetPublicKey(secretKey))); transactionsService.PipeOutTransactions.LinkTo(_gatewayService.PipeInTransactions); ServiceProviderUpdater updater = new ServiceProviderUpdater(accountId, clientCryptoService, _assetsService, _dataAccessService, _identityAttributesService, _blockParsersRepositoriesRepository, _gatewayService, transactionsService, _identitiesHubContext, _appConfig, _loggerService); walletSynchronizer.Initialize(accountId, clientCryptoService, _gatewayService, cancellationTokenSource.Token); packetsProvider.PipeOut.LinkTo(walletSynchronizer.PipeIn); walletSynchronizer.PipeOut.LinkTo(updater.PipeIn); walletSynchronizer.Start(); packetsProvider.Start(); var state = new StatePersistency { AccountId = accountId, PacketsProvider = packetsProvider, TransactionsService = transactionsService, ClientCryptoService = clientCryptoService, WalletSynchronizer = walletSynchronizer, CancellationTokenSource = cancellationTokenSource }; _statePersistencyItems.Add(accountId, state); }
public StatePersistency ResolveStateExecutionServices(ulong accountId) { StatePersistency statePersistency = _statePersistencyItems[accountId]; return(statePersistency); }