private static int GetMaxNumberTask(AsyncHttpServerOptions options) { var rpsForProcessor = 1000 / options.AverageRequestProcessingTime; var requestProcessingProcessorCount = Environment.ProcessorCount - 1; return((int)(rpsForProcessor * requestProcessingProcessorCount * options.ServerLoadInPercent)); }
public AsyncHttpServer(AsyncHttpServerOptions options, List <IRouter> routers) { listener = new HttpListener(); this.routers = routers; maxNumberTaskPending = GetMaxNumberTask(options); timeoutMinusAverageTime = options.RequestTimeout - options.AverageRequestProcessingTime; if (timeoutMinusAverageTime < 0) { throw new ArgumentException(nameof(options)); } logger = LogManager.GetCurrentClassLogger(); }