protected void InitializeRequestQueue(ApplicationConfiguration configuration)
{
// set suitable defaults.
int minRequestThreadCount = 10;
int maxRequestThreadCount = 1000;
int maxQueuedRequestCount = 2000;
if (configuration.ServerConfiguration != null)
{
minRequestThreadCount = configuration.ServerConfiguration.MinRequestThreadCount;
maxRequestThreadCount = configuration.ServerConfiguration.MaxRequestThreadCount;
maxQueuedRequestCount = configuration.ServerConfiguration.MaxQueuedRequestCount;
}
else if (configuration.DiscoveryServerConfiguration != null)
{
minRequestThreadCount = configuration.DiscoveryServerConfiguration.MinRequestThreadCount;
maxRequestThreadCount = configuration.DiscoveryServerConfiguration.MaxRequestThreadCount;
maxQueuedRequestCount = configuration.DiscoveryServerConfiguration.MaxQueuedRequestCount;
}
// ensure configuration errors don't render the server inoperable.
if (minRequestThreadCount < 1)
{
minRequestThreadCount = 1;
}
if (maxRequestThreadCount < minRequestThreadCount)
{
maxRequestThreadCount = minRequestThreadCount;
}
if (maxQueuedRequestCount < 100)
{
maxQueuedRequestCount = 100;
}
if (m_requestQueue != null)
{
m_requestQueue.Dispose();
}
m_requestQueue = new RequestQueue(this, minRequestThreadCount, maxRequestThreadCount, maxQueuedRequestCount);
}