コード例 #1
0
        public virtual Task <bool> TryInsertAddressAsync(WalletAddress walletAddress)
        {
            lock (_sync)
            {
                var           walletId = $"{walletAddress.Currency}:{walletAddress.Address}";
                WalletAddress existsAddress;

                if (!_addresses.TryGetValue(walletId, out existsAddress))
                {
                    _addresses[walletId] = walletAddress.Copy();

                    var data = Convert.ToBase64String(BsonSerializer.Serialize(_bsonMapper.ToDocument(walletAddress)));
                    SaveDataCallback?.Invoke(AvailableDataType.WalletAddress, walletId, data);
                    return(Task.FromResult(true));
                }

                if (existsAddress.KeyType != walletAddress.KeyType)
                {
                    existsAddress.KeyType          = walletAddress.KeyType;
                    existsAddress.KeyIndex.Chain   = walletAddress.KeyIndex.Chain;
                    existsAddress.KeyIndex.Index   = walletAddress.KeyIndex.Index;
                    existsAddress.KeyIndex.Account = walletAddress.KeyIndex.Account;
                    _addresses[walletId]           = existsAddress.Copy();

                    var data = Convert.ToBase64String(BsonSerializer.Serialize(_bsonMapper.ToDocument(existsAddress)));
                    SaveDataCallback?.Invoke(AvailableDataType.WalletAddress, walletId, data);
                    return(Task.FromResult(true));
                }

                return(Task.FromResult(false));
            }
        }
コード例 #2
0
        public virtual Task <bool> UpsertAddressAsync(WalletAddress walletAddress)
        {
            lock (_sync)
            {
                var walletId = $"{walletAddress.Currency}:{walletAddress.Address}";

                _addresses[walletId] = walletAddress.Copy();

                var data = Convert.ToBase64String(BsonSerializer.Serialize(_bsonMapper.ToDocument(walletAddress)));

                SaveDataCallback?.Invoke(AvailableDataType.WalletAddress, walletId, data);

                return(Task.FromResult(true));
            }
        }
コード例 #3
0
        public Task <bool> TryInsertTezosTokenAddressAsync(WalletAddress address)
        {
            lock (_sync)
            {
                var walletId =
                    $"{address.Currency}:{address.TokenBalance.Contract}:{address.TokenBalance.TokenId}:{address.Address}";

                if (_tezosTokensAddresses.ContainsKey(walletId))
                {
                    return(Task.FromResult(false));
                }

                _tezosTokensAddresses[walletId] = address.Copy();

                var data = Convert.ToBase64String(BsonSerializer.Serialize(_bsonMapper.ToDocument(address)));
                SaveDataCallback?.Invoke(AvailableDataType.TezosTokenAddress, walletId, data);

                return(Task.FromResult(true));
            }
        }