mirror of
https://github.com/logos-storage/logos-storage-nim-cs-dist-tests.git
synced 2026-01-03 05:53:12 +00:00
56 lines
1.6 KiB
C#
56 lines
1.6 KiB
C#
using CodexContractsPlugin.ChainMonitor;
|
|
using DiscordRewards;
|
|
using Utils;
|
|
|
|
namespace TestNetRewarder
|
|
{
|
|
public class RequestBuilder
|
|
{
|
|
public EventsAndErrors Build(ChainState chainState, ChainEventMessage[] lines, string[] errors)
|
|
{
|
|
var activeChainAddresses = CollectActiveAddresses(chainState);
|
|
|
|
return new EventsAndErrors
|
|
{
|
|
EventsOverview = lines,
|
|
Errors = errors,
|
|
ActiveChainAddresses = activeChainAddresses
|
|
};
|
|
}
|
|
|
|
private ActiveChainAddresses CollectActiveAddresses(ChainState chainState)
|
|
{
|
|
var hosts = new List<string>();
|
|
var clients = new List<string>();
|
|
|
|
foreach (var request in chainState.Requests)
|
|
{
|
|
CollectAddresses(request, hosts, clients);
|
|
}
|
|
|
|
return new ActiveChainAddresses
|
|
{
|
|
Hosts = hosts.ToArray(),
|
|
Clients = clients.ToArray()
|
|
};
|
|
}
|
|
|
|
private void CollectAddresses(IChainStateRequest request, List<string> hosts, List<string> clients)
|
|
{
|
|
if (request.State != CodexContractsPlugin.RequestState.Started) return;
|
|
|
|
AddIfNew(clients, request.Client);
|
|
foreach (var host in request.Hosts.GetHosts())
|
|
{
|
|
AddIfNew(hosts, host);
|
|
}
|
|
}
|
|
|
|
private void AddIfNew(List<string> list, EthAddress address)
|
|
{
|
|
var addr = address.Address;
|
|
if (!list.Contains(addr)) list.Add(addr);
|
|
}
|
|
}
|
|
}
|