Beispiel #1
0
        private async Task <(List <Deposit>, List <WithdrawInfo>)> LoadOps(string blockNumberDeposits)
        {
            await client.WaitServerStartedAsync();

            session = await client.CreateWebsocketNotificationSessionAsync();

            session.ListenTrackedSources(new[] { oracleAddress });
            ProcessNotifications();

            var oldTx = (await client.GetTransactionsAsync(oracleAddress)).ConfirmedTransactions.Transactions;

            int heigth = 0;

            if (!string.IsNullOrEmpty(blockNumberDeposits))
            {
                heigth = int.Parse(blockNumberDeposits);
            }

            if (heigth > 0)
            {
                oldTx = oldTx.Where(t => t.Height > heigth).ToList();
                return(ProcessOperations(oldTx));
            }
            else
            {
                return(ProcessOperations(oldTx));
            }
        }
        private async Task <(List <Deposit>, List <WithdrawInfo>)> LoadOps(string blockNumberDeposits)
        {
            var listenerStarted = false;

            while (!listenerStarted)
            {
                try
                {
                    await client.WaitServerStartedAsync();

                    session = await client.CreateWebsocketNotificationSessionAsync();

                    session.ListenTrackedSources(new[] { oracleAddress });
                    ProcessNotifications();
                    listenerStarted = true;
                }
                catch (Exception e)
                {
                    Log.Error("Failed to stablish bitcoin websocket connector ");
                    Log.Error(e.ToString());
                    await Task.Delay(3000);
                }
            }


            var opLoaded = false;

            while (!opLoaded)
            {
                try
                {
                    var oldTx = (await client.GetTransactionsAsync(oracleAddress)).ConfirmedTransactions.Transactions;

                    opLoaded = true;
                    int heigth = 0;
                    if (!string.IsNullOrEmpty(blockNumberDeposits))
                    {
                        heigth = int.Parse(blockNumberDeposits);
                    }

                    if (heigth > 0)
                    {
                        oldTx = oldTx.Where(t => t.Height > heigth).ToList();
                        return(ProcessOperations(oldTx));
                    }
                    else
                    {
                        return(ProcessOperations(oldTx));
                    }
                }
                catch (Exception e)
                {
                    Log.Error("Failed to load transactions");
                    Log.Error(e.ToString());

                    if (opLoaded)
                    {
                        throw;
                    }

                    await Task.Delay(3000);
                }
            }

            return(new List <Deposit>(), new List <WithdrawInfo>());
        }