2024-10-30 08:56:31 +01:00
|
|
|
|
using Logging;
|
2024-09-12 12:05:42 +02:00
|
|
|
|
|
2024-10-30 08:56:31 +01:00
|
|
|
|
namespace AutoClient.Modes
|
2024-09-12 12:05:42 +02:00
|
|
|
|
{
|
2024-10-30 08:56:31 +01:00
|
|
|
|
public class PurchasingMode : IMode
|
2024-09-12 12:05:42 +02:00
|
|
|
|
{
|
2024-10-30 08:56:31 +01:00
|
|
|
|
private readonly List<AutomaticPurchaser> purchasers = new List<AutomaticPurchaser>();
|
2024-09-12 14:38:15 +02:00
|
|
|
|
private readonly App app;
|
|
|
|
|
|
private Task starterTask = Task.CompletedTask;
|
2024-09-12 12:05:42 +02:00
|
|
|
|
|
2024-10-30 08:56:31 +01:00
|
|
|
|
public PurchasingMode(App app)
|
2024-09-12 12:05:42 +02:00
|
|
|
|
{
|
2024-09-12 14:38:15 +02:00
|
|
|
|
this.app = app;
|
2024-09-12 12:05:42 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-10-30 08:56:31 +01:00
|
|
|
|
public void Start(ICodexInstance instance, int index)
|
2024-09-12 12:05:42 +02:00
|
|
|
|
{
|
2024-09-12 14:38:15 +02:00
|
|
|
|
for (var i = 0; i < app.Config.NumConcurrentPurchases; i++)
|
2024-09-12 12:05:42 +02:00
|
|
|
|
{
|
2024-10-30 11:09:13 +01:00
|
|
|
|
purchasers.Add(new AutomaticPurchaser(new LogPrefixer(app.Log, $"({i}) "), instance, new CodexNode(app, instance)));
|
2024-09-12 12:05:42 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-09-12 14:38:15 +02:00
|
|
|
|
var delayPerPurchaser =
|
|
|
|
|
|
TimeSpan.FromSeconds(10 * index) +
|
|
|
|
|
|
TimeSpan.FromMinutes(app.Config.ContractDurationMinutes) / app.Config.NumConcurrentPurchases;
|
|
|
|
|
|
|
|
|
|
|
|
starterTask = Task.Run(() => StartPurchasers(delayPerPurchaser));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private async Task StartPurchasers(TimeSpan delayPerPurchaser)
|
|
|
|
|
|
{
|
2024-09-12 12:05:42 +02:00
|
|
|
|
foreach (var purchaser in purchasers)
|
|
|
|
|
|
{
|
|
|
|
|
|
purchaser.Start();
|
|
|
|
|
|
await Task.Delay(delayPerPurchaser);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-09-12 14:38:15 +02:00
|
|
|
|
|
|
|
|
|
|
public void Stop()
|
|
|
|
|
|
{
|
|
|
|
|
|
starterTask.Wait();
|
|
|
|
|
|
foreach (var purchaser in purchasers)
|
|
|
|
|
|
{
|
|
|
|
|
|
purchaser.Stop();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-09-12 12:05:42 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|