TaskScheduler: use randtime instead of custom implementation
Port From (https://github.com/TrinityCore/TrinityCore/commit/c8a4cc806824d93f63cc7e0299428d7b524edddd)
This commit is contained in:
@@ -139,7 +139,7 @@ namespace Framework.Dynamic
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskScheduler Schedule(TimeSpan min, TimeSpan max, Action<TaskContext> task)
|
public TaskScheduler Schedule(TimeSpan min, TimeSpan max, Action<TaskContext> task)
|
||||||
{
|
{
|
||||||
return Schedule(RandomDurationBetween(min, max), task);
|
return Schedule(RandomHelper.RandTime(min, max), task);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -153,7 +153,7 @@ namespace Framework.Dynamic
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskScheduler Schedule(TimeSpan min, TimeSpan max, uint group, Action<TaskContext> task)
|
public TaskScheduler Schedule(TimeSpan min, TimeSpan max, uint group, Action<TaskContext> task)
|
||||||
{
|
{
|
||||||
return Schedule(RandomDurationBetween(min, max), group, task);
|
return Schedule(RandomHelper.RandTime(min, max), group, task);
|
||||||
}
|
}
|
||||||
|
|
||||||
public TaskScheduler CancelAll()
|
public TaskScheduler CancelAll()
|
||||||
@@ -200,7 +200,7 @@ namespace Framework.Dynamic
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskScheduler DelayAll(TimeSpan min, TimeSpan max)
|
public TaskScheduler DelayAll(TimeSpan min, TimeSpan max)
|
||||||
{
|
{
|
||||||
return DelayAll(RandomDurationBetween(min, max));
|
return DelayAll(RandomHelper.RandTime(min, max));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -233,7 +233,7 @@ namespace Framework.Dynamic
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskScheduler DelayGroup(uint group, TimeSpan min, TimeSpan max)
|
public TaskScheduler DelayGroup(uint group, TimeSpan min, TimeSpan max)
|
||||||
{
|
{
|
||||||
return DelayGroup(group, RandomDurationBetween(min, max));
|
return DelayGroup(group, RandomHelper.RandTime(min, max));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -260,7 +260,7 @@ namespace Framework.Dynamic
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskScheduler RescheduleAll(TimeSpan min, TimeSpan max)
|
public TaskScheduler RescheduleAll(TimeSpan min, TimeSpan max)
|
||||||
{
|
{
|
||||||
return RescheduleAll(RandomDurationBetween(min, max));
|
return RescheduleAll(RandomHelper.RandTime(min, max));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -294,7 +294,7 @@ namespace Framework.Dynamic
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskScheduler RescheduleGroup(uint group, TimeSpan min, TimeSpan max)
|
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)
|
internal TaskScheduler InsertTask(Task task)
|
||||||
@@ -322,21 +322,6 @@ namespace Framework.Dynamic
|
|||||||
return InsertTask(new Task(end + time, time, group, 0, task));
|
return InsertTask(new Task(end + time, time, group, 0, task));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns a random duration between min and max
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="min"></param>
|
|
||||||
/// <param name="max"></param>
|
|
||||||
/// <returns>TimeSpan</returns>
|
|
||||||
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)
|
void Dispatch(success_t callback = null)
|
||||||
{
|
{
|
||||||
// If the validation failed abort the dispatching here.
|
// If the validation failed abort the dispatching here.
|
||||||
@@ -672,7 +657,7 @@ namespace Framework.Dynamic
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskContext Repeat(TimeSpan min, TimeSpan max)
|
public TaskContext Repeat(TimeSpan min, TimeSpan max)
|
||||||
{
|
{
|
||||||
return Repeat(TaskScheduler.RandomDurationBetween(min, max));
|
return Repeat(RandomHelper.RandTime(min, max));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -720,7 +705,7 @@ namespace Framework.Dynamic
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskContext Schedule(TimeSpan min, TimeSpan max, Action<TaskContext> task)
|
public TaskContext Schedule(TimeSpan min, TimeSpan max, Action<TaskContext> 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(); }); }
|
public TaskContext Schedule(TimeSpan min, TimeSpan max, Action task) { return Schedule(min, max, delegate (TaskContext task1) { task(); }); }
|
||||||
|
|
||||||
@@ -737,7 +722,7 @@ namespace Framework.Dynamic
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskContext Schedule(TimeSpan min, TimeSpan max, uint group, Action<TaskContext> task)
|
public TaskContext Schedule(TimeSpan min, TimeSpan max, uint group, Action<TaskContext> 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(); }); }
|
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
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskContext DelayAll(TimeSpan min, TimeSpan max)
|
public TaskContext DelayAll(TimeSpan min, TimeSpan max)
|
||||||
{
|
{
|
||||||
return DelayAll(TaskScheduler.RandomDurationBetween(min, max));
|
return DelayAll(RandomHelper.RandTime(min, max));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -782,7 +767,7 @@ namespace Framework.Dynamic
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskContext DelayGroup(uint group, TimeSpan min, TimeSpan max)
|
public TaskContext DelayGroup(uint group, TimeSpan min, TimeSpan max)
|
||||||
{
|
{
|
||||||
return DelayGroup(group, TaskScheduler.RandomDurationBetween(min, max));
|
return DelayGroup(group, RandomHelper.RandTime(min, max));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -803,7 +788,7 @@ namespace Framework.Dynamic
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskContext RescheduleAll(TimeSpan min, TimeSpan max)
|
public TaskContext RescheduleAll(TimeSpan min, TimeSpan max)
|
||||||
{
|
{
|
||||||
return RescheduleAll(TaskScheduler.RandomDurationBetween(min, max));
|
return RescheduleAll(RandomHelper.RandTime(min, max));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -826,7 +811,7 @@ namespace Framework.Dynamic
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskContext RescheduleGroup(uint group, TimeSpan min, TimeSpan max)
|
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
|
// Associated task
|
||||||
|
|||||||
Reference in New Issue
Block a user