示例#1
0
 public void Process()
 {
     if (!m_IsEstablished && DateTime.Now.Subtract(m_ConnectedSince).TotalSeconds >= Constants.ConnectTimeout)
     {
         Disconnect();
         return;
     }
     try
     {
         m_SendingQueue.Lock();
         for (int n = m_SendingQueue.Count - 1; n >= 0; n--)
         {
             if (DateTime.Now.Subtract(m_SendingQueue[n].Value).TotalSeconds >= Constants.CommandTimeout)
             {
                 m_SendingQueue.RemoveAt(n);
             }
         }
     }
     finally
     {
         m_SendingQueue.Unlock();
     }
     try
     {
         Core.Connections.Lock();
         if (bool.Parse(m_Settings["HasDownloadLimit"]) && int.Parse(m_Settings["DownloadLimit"]) > 0 && Core.Connections.Count != 0)
         {
             m_DownloadLimit = Math.Max(m_DownloadLimitUsed + m_DownloadAdjustment, (int)((float)int.Parse(m_Settings["DownloadLimit"]) / Core.Connections.Count));
         }
         else
         {
             m_DownloadLimit = 0;
         }
         m_DownloadLimitUsed = 0;
         m_ReceivingResetEvent.Set();
         if (bool.Parse(m_Settings["HasUploadLimit"]) && int.Parse(m_Settings["UploadLimit"]) > 0 && Core.Connections.Count != 0)
         {
             m_UploadLimit = Math.Max(m_UploadLimitUsed + m_UploadAdjustment, (int)((float)int.Parse(m_Settings["UploadLimit"]) / Core.Connections.Count));
         }
         else
         {
             m_UploadLimit = 0;
         }
         m_UploadLimitUsed = 0;
         m_SendingResetEvent.Set();
     }
     finally
     {
         Core.Connections.Unlock();
     }
 }