private HttpWebRequest CheckNextRequest()
{
GlobalLog.ThreadContract(ThreadKinds.Unknown, "Connection#" + ValidationHelper.HashString(this) + "::CheckNextRequest");
if (m_WaitList.Count == 0) {
// We're free now, if we're not going to close the connection soon.
m_Free = m_KeepAlive;
return null;
}
if (!CanBePooled) {
return null;
}
HttpWebRequest nextRequest = m_WaitList[0] as HttpWebRequest;
if (m_IsPipelinePaused)
m_IsPipelinePaused = m_WriteList.Count > s_MinPipelinedCount;
if (!nextRequest.Pipelined || nextRequest.RequireBody || !m_CanPipeline || !m_Pipelining || m_IsPipelinePaused) {
if (m_WriteList.Count != 0) {
nextRequest = null;
}
}
if (nextRequest != null) {
GlobalLog.Print("Connection#" + ValidationHelper.HashString(this) + "::CheckNextRequest() Removing request#" + ValidationHelper.HashString(nextRequest) + " from m_WaitList. New Count:" + (m_WaitList.Count - 1).ToString());
m_WaitList.RemoveAt(0);
CheckIdle();
}
return nextRequest;
}