diff --git a/Eqn.Sender/Controllers/fbmsController.cs b/Eqn.Sender/Controllers/fbmsController.cs index fb1efaa..f13ddf4 100644 --- a/Eqn.Sender/Controllers/fbmsController.cs +++ b/Eqn.Sender/Controllers/fbmsController.cs @@ -61,17 +61,17 @@ namespace Eqn.Sender.Controllers #endif [HttpPost("sendAndroid")] - public async Task SendAndroid([FromBody] MsgPayload rawData, bool fullReturn = false, int maxToken = 499, int numParall = 4, bool dryRun = false) + public async Task SendAndroid([FromBody] MsgPayload rawData, bool fullReturn = false, bool doDelay = true, int maxToken = 499, int numParall = 4, bool dryRun = false) { - string answ = await DoSend(rawData, fullReturn, true, maxToken, numParall, dryRun); + string answ = await DoSend(rawData, fullReturn, doDelay, true, maxToken, numParall, dryRun); // restituisco esito... return answ; } [HttpPost("sendIOS")] - public async Task SendIOS([FromBody] MsgPayload rawData, bool fullReturn = false, int maxToken = 499, int numParall = 4, bool dryRun = false) + public async Task SendIOS([FromBody] MsgPayload rawData, bool fullReturn = false, bool doDelay = true, int maxToken = 499, int numParall = 4, bool dryRun = false) { - string answ = await DoSend(rawData, fullReturn, false, maxToken, numParall, dryRun); + string answ = await DoSend(rawData, fullReturn, doDelay, false, maxToken, numParall, dryRun); // restituisco esito... return answ; } @@ -157,12 +157,13 @@ namespace Eqn.Sender.Controllers /// /// Dati payload /// Indica se ritornare per intero il messaggio firebase + /// Indica se mettere delay causale 15-25 ms tra ogni send (deault true) /// Booleano: true = Android / false=iOS /// Num max di token x singolo invio FireBase /// Parallelismo send ammesso /// Se true fa solo SIMULAZIONE invio /// - private async Task DoSend(MsgPayload rawData, bool fullReturn, bool isAndroid, int maxToken, int numParall, bool dryRun) + private async Task DoSend(MsgPayload rawData, bool fullReturn, bool doDelay, bool isAndroid, int maxToken, int numParall, bool dryRun) { string answ = ""; //limito a 499 se anche me ne richiedesse di +... @@ -173,6 +174,7 @@ namespace Eqn.Sender.Controllers int numOk = 0; int numErr = 0; int numResp = 0; + Random rnd = new Random(); // preparo statistiche invio ConcurrentBag elapsedTime = new ConcurrentBag(); // preparare vera lista invio (multi messaggio) @@ -243,6 +245,10 @@ namespace Eqn.Sender.Controllers var options = new ParallelOptions { MaxDegreeOfParallelism = numParall }; await Parallel.ForEachAsync(messageList, async (message, token) => { + if (doDelay) + { + await Task.Delay(rnd.Next(15, 25)); + } Stopwatch lsw = new Stopwatch(); var currData = new BStatData(); lsw.Start(); @@ -258,6 +264,10 @@ namespace Eqn.Sender.Controllers { foreach (var item in messageList) { + if (doDelay) + { + await Task.Delay(rnd.Next(15, 25)); + } Stopwatch lsw = new Stopwatch(); var currData = new BStatData(); lsw.Start();