Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Unified Diff: net/third_party/udt/src/ccc.cpp

Issue 6708091: Remove UDT. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/third_party/udt/src/ccc.h ('k') | net/third_party/udt/src/channel.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/third_party/udt/src/ccc.cpp
===================================================================
--- net/third_party/udt/src/ccc.cpp (revision 78992)
+++ net/third_party/udt/src/ccc.cpp (working copy)
@@ -1,311 +0,0 @@
-/*****************************************************************************
-Copyright (c) 2001 - 2009, The Board of Trustees of the University of Illinois.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must reproduce the
- above copyright notice, this list of conditions
- and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the University of Illinois
- nor the names of its contributors may be used to
- endorse or promote products derived from this
- software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*****************************************************************************/
-
-/*****************************************************************************
-written by
- Yunhong Gu, last updated 07/09/2009
-*****************************************************************************/
-
-
-#include "core.h"
-#include "ccc.h"
-#include <cmath>
-#include <cstring>
-
-CCC::CCC():
-m_iSYNInterval(CUDT::m_iSYNInterval),
-m_dPktSndPeriod(1.0),
-m_dCWndSize(16.0),
-m_iBandwidth(),
-m_dMaxCWndSize(),
-m_iMSS(),
-m_iSndCurrSeqNo(),
-m_iRcvRate(),
-m_iRTT(),
-m_pcParam(NULL),
-m_iPSize(0),
-m_UDT(),
-m_iACKPeriod(0),
-m_iACKInterval(0),
-m_bUserDefinedRTO(false),
-m_iRTO(-1),
-m_PerfInfo()
-{
-}
-
-CCC::~CCC()
-{
- delete [] m_pcParam;
-}
-
-void CCC::setACKTimer(const int& msINT)
-{
- m_iACKPeriod = msINT;
-
- if (m_iACKPeriod > m_iSYNInterval)
- m_iACKPeriod = m_iSYNInterval;
-}
-
-void CCC::setACKInterval(const int& pktINT)
-{
- m_iACKInterval = pktINT;
-}
-
-void CCC::setRTO(const int& usRTO)
-{
- m_bUserDefinedRTO = true;
- m_iRTO = usRTO;
-}
-
-void CCC::sendCustomMsg(CPacket& pkt) const
-{
- CUDT* u = CUDT::getUDTHandle(m_UDT);
-
- if (NULL != u)
- {
- pkt.m_iID = u->m_PeerID;
- u->m_pSndQueue->sendto(u->m_pPeerAddr, pkt);
- }
-}
-
-const CPerfMon* CCC::getPerfInfo()
-{
- CUDT* u = CUDT::getUDTHandle(m_UDT);
- if (NULL != u)
- u->sample(&m_PerfInfo, false);
-
- return &m_PerfInfo;
-}
-
-void CCC::setMSS(const int& mss)
-{
- m_iMSS = mss;
-}
-
-void CCC::setBandwidth(const int& bw)
-{
- m_iBandwidth = bw;
-}
-
-void CCC::setSndCurrSeqNo(const int32_t& seqno)
-{
- m_iSndCurrSeqNo = seqno;
-}
-
-void CCC::setRcvRate(const int& rcvrate)
-{
- m_iRcvRate = rcvrate;
-}
-
-void CCC::setMaxCWndSize(const int& cwnd)
-{
- m_dMaxCWndSize = cwnd;
-}
-
-void CCC::setRTT(const int& rtt)
-{
- m_iRTT = rtt;
-}
-
-void CCC::setUserParam(const char* param, const int& size)
-{
- delete [] m_pcParam;
- m_pcParam = new char[size];
- memcpy(m_pcParam, param, size);
- m_iPSize = size;
-}
-
-//
-CUDTCC::CUDTCC():
-m_iRCInterval(),
-m_LastRCTime(),
-m_bSlowStart(),
-m_iLastAck(),
-m_bLoss(),
-m_iLastDecSeq(),
-m_dLastDecPeriod(),
-m_iNAKCount(),
-m_iDecRandom(),
-m_iAvgNAKNum(),
-m_iDecCount()
-{
-}
-
-void CUDTCC::init()
-{
- m_iRCInterval = m_iSYNInterval;
- m_LastRCTime = CTimer::getTime();
- setACKTimer(m_iRCInterval);
-
- m_bSlowStart = true;
- m_iLastAck = m_iSndCurrSeqNo;
- m_bLoss = false;
- m_iLastDecSeq = CSeqNo::decseq(m_iLastAck);
- m_dLastDecPeriod = 1;
- m_iAvgNAKNum = 0;
- m_iNAKCount = 0;
- m_iDecRandom = 1;
-
- m_dCWndSize = 16;
- m_dPktSndPeriod = 1;
-}
-
-void CUDTCC::onACK(const int32_t& ack)
-{
- uint64_t currtime = CTimer::getTime();
- if (currtime - m_LastRCTime < (uint64_t)m_iRCInterval)
- return;
-
- m_LastRCTime = currtime;
-
- if (m_bSlowStart)
- {
- m_dCWndSize += CSeqNo::seqlen(m_iLastAck, ack);
- m_iLastAck = ack;
-
- if (m_dCWndSize > m_dMaxCWndSize)
- {
- m_bSlowStart = false;
- if (m_iRcvRate > 0)
- m_dPktSndPeriod = 1000000.0 / m_iRcvRate;
- else
- m_dPktSndPeriod = m_dCWndSize / (m_iRTT + m_iRCInterval);
- }
- }
- else
- m_dCWndSize = m_iRcvRate / 1000000.0 * (m_iRTT + m_iRCInterval) + 16;
-
- // During Slow Start, no rate increase
- if (m_bSlowStart)
- return;
-
- if (m_bLoss)
- {
- m_bLoss = false;
- return;
- }
-
- int64_t B = (int64_t)(m_iBandwidth - 1000000.0 / m_dPktSndPeriod);
- if ((m_dPktSndPeriod > m_dLastDecPeriod) && ((m_iBandwidth / 9) < B))
- B = m_iBandwidth / 9;
-
- double inc;
-
- if (B <= 0)
- inc = 1.0 / m_iMSS;
- else
- {
- // inc = max(10 ^ ceil(log10( B * MSS * 8 ) * Beta / MSS, 1/MSS)
- // Beta = 1.5 * 10^(-6)
-
- inc = pow(10.0, ceil(log10(B * m_iMSS * 8.0))) * 0.0000015 / m_iMSS;
-
- if (inc < 1.0/m_iMSS)
- inc = 1.0/m_iMSS;
- }
-
- m_dPktSndPeriod = (m_dPktSndPeriod * m_iRCInterval) / (m_dPktSndPeriod * inc + m_iRCInterval);
-
- //set maximum transfer rate
- if ((NULL != m_pcParam) && (m_iPSize == 8))
- {
- int64_t maxSR = *(int64_t*)m_pcParam;
- if (maxSR <= 0)
- return;
-
- double minSP = 1000000.0 / (double(maxSR) / m_iMSS);
- if (m_dPktSndPeriod < minSP)
- m_dPktSndPeriod = minSP;
- }
-}
-
-void CUDTCC::onLoss(const int32_t* losslist, const int&)
-{
- //Slow Start stopped, if it hasn't yet
- if (m_bSlowStart)
- {
- m_bSlowStart = false;
- if (m_iRcvRate > 0)
- m_dPktSndPeriod = 1000000.0 / m_iRcvRate;
- else
- m_dPktSndPeriod = m_dCWndSize / (m_iRTT + m_iRCInterval);
- }
-
- m_bLoss = true;
-
- if (CSeqNo::seqcmp(losslist[0] & 0x7FFFFFFF, m_iLastDecSeq) > 0)
- {
- m_dLastDecPeriod = m_dPktSndPeriod;
- m_dPktSndPeriod = ceil(m_dPktSndPeriod * 1.125);
-
- m_iAvgNAKNum = (int)ceil(m_iAvgNAKNum * 0.875 + m_iNAKCount * 0.125);
- m_iNAKCount = 1;
- m_iDecCount = 1;
-
- m_iLastDecSeq = m_iSndCurrSeqNo;
-
- // remove global synchronization using randomization
- srand(m_iLastDecSeq);
- m_iDecRandom = (int)ceil(m_iAvgNAKNum * (double(rand()) / RAND_MAX));
- if (m_iDecRandom < 1)
- m_iDecRandom = 1;
- }
- else if ((m_iDecCount ++ < 5) && (0 == (++ m_iNAKCount % m_iDecRandom)))
- {
- // 0.875^5 = 0.51, rate should not be decreased by more than half within a congestion period
- m_dPktSndPeriod = ceil(m_dPktSndPeriod * 1.125);
- m_iLastDecSeq = m_iSndCurrSeqNo;
- }
-}
-
-void CUDTCC::onTimeout()
-{
- if (m_bSlowStart)
- {
- m_bSlowStart = false;
- if (m_iRcvRate > 0)
- m_dPktSndPeriod = 1000000.0 / m_iRcvRate;
- else
- m_dPktSndPeriod = m_dCWndSize / (m_iRTT + m_iRCInterval);
- }
- else
- {
- /*
- m_dLastDecPeriod = m_dPktSndPeriod;
- m_dPktSndPeriod = ceil(m_dPktSndPeriod * 2);
- m_iLastDecSeq = m_iLastAck;
- */
- }
-}
« no previous file with comments | « net/third_party/udt/src/ccc.h ('k') | net/third_party/udt/src/channel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698