FlowControlUtil.cs 859 B

12345678910111213141516171819202122232425
  1. namespace Houdar.Core.Util.Common
  2. {
  3. public static class FlowControlUtil
  4. {
  5. public static int CalculateFlowControlTimeMilliseconds(int pendingCount, int thresholdCount, int stepPercent, int baseWaitMilliseconds, int maxWaitMilliseconds = 10000)
  6. {
  7. var exceedCount = pendingCount - thresholdCount;
  8. exceedCount = exceedCount <= 0 ? 1 : exceedCount;
  9. var stepCount = stepPercent * thresholdCount / 100;
  10. stepCount = stepCount <= 0 ? 1 : stepCount;
  11. var times = exceedCount / stepCount;
  12. times = times <= 0 ? 1 : times;
  13. var waitMilliseconds = times * baseWaitMilliseconds;
  14. if (waitMilliseconds > maxWaitMilliseconds)
  15. {
  16. return maxWaitMilliseconds;
  17. }
  18. return waitMilliseconds;
  19. }
  20. }
  21. }