From 556334221b51abd979229d9b5116a3e1995bd559 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Tue, 1 Mar 2022 17:32:51 -0500 Subject: [PATCH] TaskScheduler: use randtime instead of custom implementation Port From (https://github.com/TrinityCore/TrinityCore/commit/c8a4cc806824d93f63cc7e0299428d7b524edddd) --- Source/Framework/Dynamic/TaskScheduler.cs | 41 +++++++---------------- 1 file changed, 13 insertions(+), 28 deletions(-) diff --git a/Source/Framework/Dynamic/TaskScheduler.cs b/Source/Framework/Dynamic/TaskScheduler.cs index 493cead86..094ca89ef 100644 --- a/Source/Framework/Dynamic/TaskScheduler.cs +++ b/Source/Framework/Dynamic/TaskScheduler.cs @@ -139,7 +139,7 @@ namespace Framework.Dynamic /// public TaskScheduler Schedule(TimeSpan min, TimeSpan max, Action task) { - return Schedule(RandomDurationBetween(min, max), task); + return Schedule(RandomHelper.RandTime(min, max), task); } /// @@ -153,7 +153,7 @@ namespace Framework.Dynamic /// public TaskScheduler Schedule(TimeSpan min, TimeSpan max, uint group, Action task) { - return Schedule(RandomDurationBetween(min, max), group, task); + return Schedule(RandomHelper.RandTime(min, max), group, task); } public TaskScheduler CancelAll() @@ -200,7 +200,7 @@ namespace Framework.Dynamic /// public TaskScheduler DelayAll(TimeSpan min, TimeSpan max) { - return DelayAll(RandomDurationBetween(min, max)); + return DelayAll(RandomHelper.RandTime(min, max)); } /// @@ -233,7 +233,7 @@ namespace Framework.Dynamic /// public TaskScheduler DelayGroup(uint group, TimeSpan min, TimeSpan max) { - return DelayGroup(group, RandomDurationBetween(min, max)); + return DelayGroup(group, RandomHelper.RandTime(min, max)); } /// @@ -260,7 +260,7 @@ namespace Framework.Dynamic /// public TaskScheduler RescheduleAll(TimeSpan min, TimeSpan max) { - return RescheduleAll(RandomDurationBetween(min, max)); + return RescheduleAll(RandomHelper.RandTime(min, max)); } /// @@ -294,7 +294,7 @@ namespace Framework.Dynamic /// public TaskScheduler RescheduleGroup(uint group, TimeSpan min, TimeSpan max) { - return RescheduleGroup(group, RandomDurationBetween(min, max)); + return RescheduleGroup(group, RandomHelper.RandTime(min, max)); } internal TaskScheduler InsertTask(Task task) @@ -322,21 +322,6 @@ namespace Framework.Dynamic return InsertTask(new Task(end + time, time, group, 0, task)); } - /// - /// Returns a random duration between min and max - /// - /// - /// - /// TimeSpan - public static TimeSpan RandomDurationBetween(TimeSpan min, TimeSpan max) - { - var milli_min = min.TotalMilliseconds; - var milli_max = max.TotalMilliseconds; - - // TC specific: use SFMT URandom - return TimeSpan.FromMilliseconds(RandomHelper.URand(milli_min, milli_max)); - } - void Dispatch(success_t callback = null) { // If the validation failed abort the dispatching here. @@ -672,7 +657,7 @@ namespace Framework.Dynamic /// public TaskContext Repeat(TimeSpan min, TimeSpan max) { - return Repeat(TaskScheduler.RandomDurationBetween(min, max)); + return Repeat(RandomHelper.RandTime(min, max)); } /// @@ -720,7 +705,7 @@ namespace Framework.Dynamic /// public TaskContext Schedule(TimeSpan min, TimeSpan max, Action task) { - return Schedule(TaskScheduler.RandomDurationBetween(min, max), task); + return Schedule(RandomHelper.RandTime(min, max), task); } public TaskContext Schedule(TimeSpan min, TimeSpan max, Action task) { return Schedule(min, max, delegate (TaskContext task1) { task(); }); } @@ -737,7 +722,7 @@ namespace Framework.Dynamic /// public TaskContext Schedule(TimeSpan min, TimeSpan max, uint group, Action task) { - return Schedule(TaskScheduler.RandomDurationBetween(min, max), group, task); + return Schedule(RandomHelper.RandTime(min, max), group, task); } public TaskContext Schedule(TimeSpan min, TimeSpan max, uint group, Action task) { return Schedule(min, max, group, delegate (TaskContext task1) { task(); }); } @@ -759,7 +744,7 @@ namespace Framework.Dynamic /// public TaskContext DelayAll(TimeSpan min, TimeSpan max) { - return DelayAll(TaskScheduler.RandomDurationBetween(min, max)); + return DelayAll(RandomHelper.RandTime(min, max)); } /// @@ -782,7 +767,7 @@ namespace Framework.Dynamic /// public TaskContext DelayGroup(uint group, TimeSpan min, TimeSpan max) { - return DelayGroup(group, TaskScheduler.RandomDurationBetween(min, max)); + return DelayGroup(group, RandomHelper.RandTime(min, max)); } /// @@ -803,7 +788,7 @@ namespace Framework.Dynamic /// public TaskContext RescheduleAll(TimeSpan min, TimeSpan max) { - return RescheduleAll(TaskScheduler.RandomDurationBetween(min, max)); + return RescheduleAll(RandomHelper.RandTime(min, max)); } /// @@ -826,7 +811,7 @@ namespace Framework.Dynamic /// public TaskContext RescheduleGroup(uint group, TimeSpan min, TimeSpan max) { - return RescheduleGroup(group, TaskScheduler.RandomDurationBetween(min, max)); + return RescheduleGroup(group, RandomHelper.RandTime(min, max)); } // Associated task