예제 #1
0
        private async Task <List <byte[]> > GetUnhandledTx()
        {
            var retries = 1;

            while (true)
            {
                try
                {
                    var limit        = 200;
                    var unhandledTxs = new List <byte[]>();
                    var result       = await StellarDataProvider.GetTransactions(Constellation.Vault.ToString(), TxCursorManager.TxCursor, limit);

                    while (result.Count > 0)
                    {
                        unhandledTxs.AddRange(result.Select(r => ByteArrayExtensions.FromHexString(r.Hash)));
                        if (result.Count != limit)
                        {
                            break;
                        }
                        result = await StellarDataProvider.GetTransactions(Constellation.Vault.ToString(), result.Last().PagingToken, limit);
                    }
                    return(unhandledTxs);
                }
                catch
                {
                    if (retries == 5)
                    {
                        throw;
                    }
                    await Task.Delay(retries * 1000);

                    retries++;
                }
            }
        }
예제 #2
0
        public static StartupBase GetStartup(BaseSettings settings)
        {
            var startup             = default(StartupBase);
            var storage             = new MongoStorage();
            var stellarDataProvider = new StellarDataProvider(settings.NetworkPassphrase, settings.HorizonUrl);

            if (settings is AlphaSettings alphaSettings)
            {
                startup = new AlphaStartup(new AlphaContext(alphaSettings, storage, stellarDataProvider));
            }
            else if (settings is AuditorSettings auditorSettings)
            {
                startup = new AuditorStartup(new AuditorContext(auditorSettings, storage, stellarDataProvider), () => new ClientConnectionWrapper(new ClientWebSocket()));
            }
            else
            {
                throw new NotSupportedException("Unknown settings type.");
            }
            return(startup);
        }