mirror of
https://github.com/aljazceru/BTCPayServerPlugins.git
synced 2025-12-18 16:14:25 +01:00
chunk zapper to not use all sockets at once
This commit is contained in:
@@ -100,25 +100,31 @@ public class Zapper : IHostedService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
var relaysToConnectTo = pendingZaps.SelectMany(@event => @event.relays).Distinct();
|
var relaysToConnectTo = pendingZaps.SelectMany(@event => @event.relays).Distinct();
|
||||||
var relaysToZap =relaysToConnectTo.ToDictionary(s => s, s => pendingZaps.Where(@event => @event.relays.Contains(s)).Select(@event => @event.nostrEvent).ToArray());
|
var relaysToZap =relaysToConnectTo.
|
||||||
|
ToDictionary(s => s, s => pendingZaps.Where(@event => @event.relays.Contains(s)).Select(@event => @event.nostrEvent).ToArray())
|
||||||
|
.Chunk(5);
|
||||||
|
|
||||||
await Task.WhenAll(relaysToZap.Select(async relay =>
|
foreach (var chunk in relaysToZap)
|
||||||
{
|
{
|
||||||
try
|
await Task.WhenAll(chunk.Select(async relay =>
|
||||||
{
|
{
|
||||||
_logger.LogInformation($"Zapping {relay.Value.Length} to {relay.Key}");
|
try
|
||||||
var cts = new CancellationTokenSource();
|
{
|
||||||
cts.CancelAfter(TimeSpan.FromSeconds(30));
|
_logger.LogInformation($"Zapping {relay.Value.Length} to {relay.Key}");
|
||||||
using var c = new NostrClient(new Uri(relay.Key));
|
var cts = new CancellationTokenSource();
|
||||||
_ = c.Connect(cts.Token);
|
cts.CancelAfter(TimeSpan.FromSeconds(30));
|
||||||
await c.WaitUntilConnected(cts.Token);
|
using var c = new NostrClient(new Uri(relay.Key));
|
||||||
await c.SendEventsAndWaitUntilReceived(relay.Value, cts.Token);
|
_ = c.Connect(cts.Token);
|
||||||
await c.Disconnect();
|
await c.WaitUntilConnected(cts.Token);
|
||||||
}
|
await c.SendEventsAndWaitUntilReceived(relay.Value, cts.Token);
|
||||||
catch (Exception e)
|
await c.Disconnect();
|
||||||
{
|
}
|
||||||
}
|
catch (Exception e)
|
||||||
}));
|
{
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
var waitingToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
|
var waitingToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
|
||||||
|
|||||||
Reference in New Issue
Block a user