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++; } } }
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); }