コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        public StatePersistency ResolveStateExecutionServices(ulong accountId)
        {
            StatePersistency statePersistency = _statePersistencyItems[accountId];

            return(statePersistency);
        }