/// <summary>
 /// Обновляет все картриджи баланса ОСП.
 /// </summary>
 /// <param name="ospBalance">Новый список баланса</param>
 public void UpdateBalances(IEnumerable <BalanceDTO> ospBalance)
 {
     // Если список не пустой обновить состояние каждого объекта.
     if (ospBalance.Any())
     {
         foreach (var balance in ospBalance)
         {
             UpdateBalance(balance);
         }
         BalanceUpdated?.Invoke();
     }
     // Иначе очистить текущий список.
     else
     {
         Balance.Clear();
     }
 }
        public void ReloadBalances()
        {
            Balance            = 0;
            UnconfirmedIncome  = 0;
            UnconfirmedOutcome = 0;

            var addresses = DataRepository
                            .GetUnspentTezosTokenAddressesAsync(TokenType, _tokenContract, _tokenId)
                            .WaitForResult();

            foreach (var address in addresses)
            {
                Balance            += address.Balance;
                UnconfirmedIncome  += address.UnconfirmedIncome;
                UnconfirmedOutcome += address.UnconfirmedOutcome;
            }

            BalanceUpdated?.Invoke(this, new CurrencyEventArgs(Currency));
        }
Esempio n. 3
0
 /// <summary>
 /// Update worker
 /// </summary>
 /// <param name="data"></param>
 private void _worker(object data)
 {
     while (true)
     {
         List <WalletDTO> processWallets;
         lock (locker)
         {
             processWallets = new List <WalletDTO>(_wallets);
         }
         foreach (var wallet in processWallets)
         {
             try
             {
                 var json    = _httpClient.GetStringAsync(string.Format("http://monitorapi.ccore.online/api/getbalance?seed={0}&address={1}", wallet.Seed, wallet.Address)).Result;
                 var balance = JsonConvert.DeserializeObject <BalanceWalletDTO>(json);
                 balance.LastUpdated = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
                 BalanceUpdated?.Invoke(balance, wallet.Address, wallet.Seed);
             }
             catch
             {
                 var balance = new BalanceWalletDTO()
                 {
                     LastUpdated = DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
                     Error       = true
                 };
                 BalanceUpdated?.Invoke(balance, wallet.Address, wallet.Seed);
                 //log exception
             }
         }
         lock (locker)
         {
             _sleep = true;
             while (_sleep)
             {
                 Monitor.Wait(locker);
                 _sleep = false;
             }
         }
     }
 }
 protected void RaiseBalanceUpdated(CurrencyEventArgs eventArgs)
 {
     BalanceUpdated?.Invoke(this, eventArgs);
 }