A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/Haivision/srt/commit/c1fdb61292358c604cb956fef3d6e768d7e43be6 below:

[core] Changed lock order in bstats (#2168) · Haivision/srt@c1fdb61 · GitHub

@@ -7130,98 +7130,129 @@ void srt::CUDT::bstats(CBytePerfMon *perf, bool clear, bool instantaneous)

7130 7130

if (m_bBroken || m_bClosing)

7131 7131

throw CUDTException(MJ_CONNECTION, MN_CONNLOST, 0);

7132 7132 7133 -

ScopedLock statsguard(m_StatsLock);

7134 - 7135 -

const steady_clock::time_point currtime = steady_clock::now();

7136 - 7137 -

perf->msTimeStamp = count_milliseconds(currtime - m_stats.tsStartTime);

7138 -

perf->pktSent = m_stats.traceSent;

7139 -

perf->pktSentUnique = m_stats.traceSentUniq;

7140 -

perf->pktRecv = m_stats.traceRecv;

7141 -

perf->pktRecvUnique = m_stats.traceRecvUniq;

7142 -

perf->pktSndLoss = m_stats.traceSndLoss;

7143 -

perf->pktRcvLoss = m_stats.traceRcvLoss;

7144 -

perf->pktRetrans = m_stats.traceRetrans;

7145 -

perf->pktRcvRetrans = m_stats.traceRcvRetrans;

7146 -

perf->pktSentACK = m_stats.sentACK;

7147 -

perf->pktRecvACK = m_stats.recvACK;

7148 -

perf->pktSentNAK = m_stats.sentNAK;

7149 -

perf->pktRecvNAK = m_stats.recvNAK;

7150 -

perf->usSndDuration = m_stats.sndDuration;

7151 -

perf->pktReorderDistance = m_stats.traceReorderDistance;

7152 -

perf->pktReorderTolerance = m_iReorderTolerance;

7153 -

perf->pktRcvAvgBelatedTime = m_stats.traceBelatedTime;

7154 -

perf->pktRcvBelated = m_stats.traceRcvBelated;

7155 - 7156 -

perf->pktSndFilterExtra = m_stats.sndFilterExtra;

7157 -

perf->pktRcvFilterExtra = m_stats.rcvFilterExtra;

7158 -

perf->pktRcvFilterSupply = m_stats.rcvFilterSupply;

7159 -

perf->pktRcvFilterLoss = m_stats.rcvFilterLoss;

7160 - 7161 -

/* perf byte counters include all headers (SRT+UDP+IP) */

7162 7133

const int pktHdrSize = CPacket::HDR_SIZE + CPacket::UDP_HDR_SIZE;

7163 -

perf->byteSent = m_stats.traceBytesSent + (m_stats.traceSent * pktHdrSize);

7164 -

perf->byteSentUnique = m_stats.traceBytesSentUniq + (m_stats.traceSentUniq * pktHdrSize);

7165 -

perf->byteRecv = m_stats.traceBytesRecv + (m_stats.traceRecv * pktHdrSize);

7166 -

perf->byteRecvUnique = m_stats.traceBytesRecvUniq + (m_stats.traceRecvUniq * pktHdrSize);

7167 -

perf->byteRetrans = m_stats.traceBytesRetrans + (m_stats.traceRetrans * pktHdrSize);

7168 -

perf->byteRcvLoss = m_stats.traceRcvBytesLoss + (m_stats.traceRcvLoss * pktHdrSize);

7169 - 7170 -

perf->pktSndDrop = m_stats.traceSndDrop;

7171 -

perf->pktRcvDrop = m_stats.traceRcvDrop + m_stats.traceRcvUndecrypt;

7172 -

perf->byteSndDrop = m_stats.traceSndBytesDrop + (m_stats.traceSndDrop * pktHdrSize);

7173 -

perf->byteRcvDrop =

7174 -

m_stats.traceRcvBytesDrop + (m_stats.traceRcvDrop * pktHdrSize) + m_stats.traceRcvBytesUndecrypt;

7175 -

perf->pktRcvUndecrypt = m_stats.traceRcvUndecrypt;

7176 -

perf->byteRcvUndecrypt = m_stats.traceRcvBytesUndecrypt;

7177 - 7178 -

perf->pktSentTotal = m_stats.sentTotal;

7179 -

perf->pktSentUniqueTotal = m_stats.sentUniqTotal;

7180 -

perf->pktRecvTotal = m_stats.recvTotal;

7181 -

perf->pktRecvUniqueTotal = m_stats.recvUniqTotal;

7182 -

perf->pktSndLossTotal = m_stats.sndLossTotal;

7183 -

perf->pktRcvLossTotal = m_stats.rcvLossTotal;

7184 -

perf->pktRetransTotal = m_stats.retransTotal;

7185 -

perf->pktSentACKTotal = m_stats.sentACKTotal;

7186 -

perf->pktRecvACKTotal = m_stats.recvACKTotal;

7187 -

perf->pktSentNAKTotal = m_stats.sentNAKTotal;

7188 -

perf->pktRecvNAKTotal = m_stats.recvNAKTotal;

7189 -

perf->usSndDurationTotal = m_stats.m_sndDurationTotal;

7190 - 7191 -

perf->byteSentTotal = m_stats.bytesSentTotal + (m_stats.sentTotal * pktHdrSize);

7192 -

perf->byteSentUniqueTotal = m_stats.bytesSentUniqTotal + (m_stats.sentUniqTotal * pktHdrSize);

7193 -

perf->byteRecvTotal = m_stats.bytesRecvTotal + (m_stats.recvTotal * pktHdrSize);

7194 -

perf->byteRecvUniqueTotal = m_stats.bytesRecvUniqTotal + (m_stats.recvUniqTotal * pktHdrSize);

7195 -

perf->byteRetransTotal = m_stats.bytesRetransTotal + (m_stats.retransTotal * pktHdrSize);

7196 -

perf->pktSndFilterExtraTotal = m_stats.sndFilterExtraTotal;

7197 -

perf->pktRcvFilterExtraTotal = m_stats.rcvFilterExtraTotal;

7198 -

perf->pktRcvFilterSupplyTotal = m_stats.rcvFilterSupplyTotal;

7199 -

perf->pktRcvFilterLossTotal = m_stats.rcvFilterLossTotal;

7200 - 7201 -

perf->byteRcvLossTotal = m_stats.rcvBytesLossTotal + (m_stats.rcvLossTotal * pktHdrSize);

7202 -

perf->pktSndDropTotal = m_stats.sndDropTotal;

7203 -

perf->pktRcvDropTotal = m_stats.rcvDropTotal + m_stats.m_rcvUndecryptTotal;

7204 -

perf->byteSndDropTotal = m_stats.sndBytesDropTotal + (m_stats.sndDropTotal * pktHdrSize);

7205 -

perf->byteRcvDropTotal =

7206 -

m_stats.rcvBytesDropTotal + (m_stats.rcvDropTotal * pktHdrSize) + m_stats.m_rcvBytesUndecryptTotal;

7207 -

perf->pktRcvUndecryptTotal = m_stats.m_rcvUndecryptTotal;

7208 -

perf->byteRcvUndecryptTotal = m_stats.m_rcvBytesUndecryptTotal;

7209 - 7210 -

const double interval = (double) count_microseconds(currtime - m_stats.tsLastSampleTime);

7211 -

perf->mbpsSendRate = double(perf->byteSent) * 8.0 / interval;

7212 -

perf->mbpsRecvRate = double(perf->byteRecv) * 8.0 / interval;

7213 -

perf->usPktSndPeriod = (double) count_microseconds(m_tdSendInterval.load());

7214 -

perf->pktFlowWindow = m_iFlowWindowSize.load();

7215 -

perf->pktCongestionWindow = (int)m_dCongestionWindow;

7216 -

perf->pktFlightSize = getFlightSpan();

7217 -

perf->msRTT = (double)m_iSRTT / 1000.0;

7218 -

perf->msSndTsbPdDelay = m_bPeerTsbPd ? m_iPeerTsbPdDelay_ms : 0;

7219 -

perf->msRcvTsbPdDelay = isOPT_TsbPd() ? m_iTsbPdDelay_ms : 0;

7220 -

perf->byteMSS = m_config.iMSS;

7221 - 7222 -

perf->mbpsMaxBW = m_config.llMaxBW > 0 ? Bps2Mbps(m_config.llMaxBW)

7223 -

: m_CongCtl.ready() ? Bps2Mbps(m_CongCtl->sndBandwidth())

7224 -

: 0;

7134 +

{

7135 +

ScopedLock statsguard(m_StatsLock);

7136 + 7137 +

const steady_clock::time_point currtime = steady_clock::now();

7138 + 7139 +

perf->msTimeStamp = count_milliseconds(currtime - m_stats.tsStartTime);

7140 +

perf->pktSent = m_stats.traceSent;

7141 +

perf->pktSentUnique = m_stats.traceSentUniq;

7142 +

perf->pktRecv = m_stats.traceRecv;

7143 +

perf->pktRecvUnique = m_stats.traceRecvUniq;

7144 +

perf->pktSndLoss = m_stats.traceSndLoss;

7145 +

perf->pktRcvLoss = m_stats.traceRcvLoss;

7146 +

perf->pktRetrans = m_stats.traceRetrans;

7147 +

perf->pktRcvRetrans = m_stats.traceRcvRetrans;

7148 +

perf->pktSentACK = m_stats.sentACK;

7149 +

perf->pktRecvACK = m_stats.recvACK;

7150 +

perf->pktSentNAK = m_stats.sentNAK;

7151 +

perf->pktRecvNAK = m_stats.recvNAK;

7152 +

perf->usSndDuration = m_stats.sndDuration;

7153 +

perf->pktReorderDistance = m_stats.traceReorderDistance;

7154 +

perf->pktReorderTolerance = m_iReorderTolerance;

7155 +

perf->pktRcvAvgBelatedTime = m_stats.traceBelatedTime;

7156 +

perf->pktRcvBelated = m_stats.traceRcvBelated;

7157 + 7158 +

perf->pktSndFilterExtra = m_stats.sndFilterExtra;

7159 +

perf->pktRcvFilterExtra = m_stats.rcvFilterExtra;

7160 +

perf->pktRcvFilterSupply = m_stats.rcvFilterSupply;

7161 +

perf->pktRcvFilterLoss = m_stats.rcvFilterLoss;

7162 + 7163 +

/* perf byte counters include all headers (SRT+UDP+IP) */

7164 +

perf->byteSent = m_stats.traceBytesSent + (m_stats.traceSent * pktHdrSize);

7165 +

perf->byteSentUnique = m_stats.traceBytesSentUniq + (m_stats.traceSentUniq * pktHdrSize);

7166 +

perf->byteRecv = m_stats.traceBytesRecv + (m_stats.traceRecv * pktHdrSize);

7167 +

perf->byteRecvUnique = m_stats.traceBytesRecvUniq + (m_stats.traceRecvUniq * pktHdrSize);

7168 +

perf->byteRetrans = m_stats.traceBytesRetrans + (m_stats.traceRetrans * pktHdrSize);

7169 +

perf->byteRcvLoss = m_stats.traceRcvBytesLoss + (m_stats.traceRcvLoss * pktHdrSize);

7170 + 7171 +

perf->pktSndDrop = m_stats.traceSndDrop;

7172 +

perf->pktRcvDrop = m_stats.traceRcvDrop + m_stats.traceRcvUndecrypt;

7173 +

perf->byteSndDrop = m_stats.traceSndBytesDrop + (m_stats.traceSndDrop * pktHdrSize);

7174 +

perf->byteRcvDrop =

7175 +

m_stats.traceRcvBytesDrop + (m_stats.traceRcvDrop * pktHdrSize) + m_stats.traceRcvBytesUndecrypt;

7176 +

perf->pktRcvUndecrypt = m_stats.traceRcvUndecrypt;

7177 +

perf->byteRcvUndecrypt = m_stats.traceRcvBytesUndecrypt;

7178 + 7179 +

perf->pktSentTotal = m_stats.sentTotal;

7180 +

perf->pktSentUniqueTotal = m_stats.sentUniqTotal;

7181 +

perf->pktRecvTotal = m_stats.recvTotal;

7182 +

perf->pktRecvUniqueTotal = m_stats.recvUniqTotal;

7183 +

perf->pktSndLossTotal = m_stats.sndLossTotal;

7184 +

perf->pktRcvLossTotal = m_stats.rcvLossTotal;

7185 +

perf->pktRetransTotal = m_stats.retransTotal;

7186 +

perf->pktSentACKTotal = m_stats.sentACKTotal;

7187 +

perf->pktRecvACKTotal = m_stats.recvACKTotal;

7188 +

perf->pktSentNAKTotal = m_stats.sentNAKTotal;

7189 +

perf->pktRecvNAKTotal = m_stats.recvNAKTotal;

7190 +

perf->usSndDurationTotal = m_stats.m_sndDurationTotal;

7191 + 7192 +

perf->byteSentTotal = m_stats.bytesSentTotal + (m_stats.sentTotal * pktHdrSize);

7193 +

perf->byteSentUniqueTotal = m_stats.bytesSentUniqTotal + (m_stats.sentUniqTotal * pktHdrSize);

7194 +

perf->byteRecvTotal = m_stats.bytesRecvTotal + (m_stats.recvTotal * pktHdrSize);

7195 +

perf->byteRecvUniqueTotal = m_stats.bytesRecvUniqTotal + (m_stats.recvUniqTotal * pktHdrSize);

7196 +

perf->byteRetransTotal = m_stats.bytesRetransTotal + (m_stats.retransTotal * pktHdrSize);

7197 +

perf->pktSndFilterExtraTotal = m_stats.sndFilterExtraTotal;

7198 +

perf->pktRcvFilterExtraTotal = m_stats.rcvFilterExtraTotal;

7199 +

perf->pktRcvFilterSupplyTotal = m_stats.rcvFilterSupplyTotal;

7200 +

perf->pktRcvFilterLossTotal = m_stats.rcvFilterLossTotal;

7201 + 7202 +

perf->byteRcvLossTotal = m_stats.rcvBytesLossTotal + (m_stats.rcvLossTotal * pktHdrSize);

7203 +

perf->pktSndDropTotal = m_stats.sndDropTotal;

7204 +

perf->pktRcvDropTotal = m_stats.rcvDropTotal + m_stats.m_rcvUndecryptTotal;

7205 +

perf->byteSndDropTotal = m_stats.sndBytesDropTotal + (m_stats.sndDropTotal * pktHdrSize);

7206 +

perf->byteRcvDropTotal =

7207 +

m_stats.rcvBytesDropTotal + (m_stats.rcvDropTotal * pktHdrSize) + m_stats.m_rcvBytesUndecryptTotal;

7208 +

perf->pktRcvUndecryptTotal = m_stats.m_rcvUndecryptTotal;

7209 +

perf->byteRcvUndecryptTotal = m_stats.m_rcvBytesUndecryptTotal;

7210 + 7211 +

// TODO: The following class members must be protected with a different mutex, not the m_StatsLock.

7212 +

const double interval = (double) count_microseconds(currtime - m_stats.tsLastSampleTime);

7213 +

perf->mbpsSendRate = double(perf->byteSent) * 8.0 / interval;

7214 +

perf->mbpsRecvRate = double(perf->byteRecv) * 8.0 / interval;

7215 +

perf->usPktSndPeriod = (double) count_microseconds(m_tdSendInterval.load());

7216 +

perf->pktFlowWindow = m_iFlowWindowSize.load();

7217 +

perf->pktCongestionWindow = (int)m_dCongestionWindow;

7218 +

perf->pktFlightSize = getFlightSpan();

7219 +

perf->msRTT = (double)m_iSRTT / 1000.0;

7220 +

perf->msSndTsbPdDelay = m_bPeerTsbPd ? m_iPeerTsbPdDelay_ms : 0;

7221 +

perf->msRcvTsbPdDelay = isOPT_TsbPd() ? m_iTsbPdDelay_ms : 0;

7222 +

perf->byteMSS = m_config.iMSS;

7223 + 7224 +

perf->mbpsMaxBW = m_config.llMaxBW > 0 ? Bps2Mbps(m_config.llMaxBW)

7225 +

: m_CongCtl.ready() ? Bps2Mbps(m_CongCtl->sndBandwidth())

7226 +

: 0;

7227 + 7228 +

if (clear)

7229 +

{

7230 +

m_stats.traceSndDrop = 0;

7231 +

m_stats.traceRcvDrop = 0;

7232 +

m_stats.traceSndBytesDrop = 0;

7233 +

m_stats.traceRcvBytesDrop = 0;

7234 +

m_stats.traceRcvUndecrypt = 0;

7235 +

m_stats.traceRcvBytesUndecrypt = 0;

7236 +

m_stats.traceBytesSent = m_stats.traceBytesRecv = m_stats.traceBytesRetrans = 0;

7237 +

m_stats.traceBytesSentUniq = m_stats.traceBytesRecvUniq = 0;

7238 +

m_stats.traceSent = m_stats.traceRecv

7239 +

= m_stats.traceSentUniq = m_stats.traceRecvUniq

7240 +

= m_stats.traceSndLoss = m_stats.traceRcvLoss = m_stats.traceRetrans

7241 +

= m_stats.sentACK = m_stats.recvACK = m_stats.sentNAK = m_stats.recvNAK = 0;

7242 +

m_stats.sndDuration = 0;

7243 +

m_stats.traceRcvRetrans = 0;

7244 +

m_stats.traceRcvBelated = 0;

7245 +

m_stats.traceRcvBytesLoss = 0;

7246 + 7247 +

m_stats.sndFilterExtra = 0;

7248 +

m_stats.rcvFilterExtra = 0;

7249 + 7250 +

m_stats.rcvFilterSupply = 0;

7251 +

m_stats.rcvFilterLoss = 0;

7252 + 7253 +

m_stats.tsLastSampleTime = currtime;

7254 +

}

7255 +

}

7225 7256 7226 7257

const int64_t availbw = m_iBandwidth == 1 ? m_RcvTimeWindow.getBandwidth() : m_iBandwidth.load();

7227 7258

@@ -7242,7 +7273,6 @@ void srt::CUDT::bstats(CBytePerfMon *perf, bool clear, bool instantaneous)

7242 7273

perf->pktSndBuf = m_pSndBuffer->getAvgBufSize((perf->byteSndBuf), (perf->msSndBuf));

7243 7274

}

7244 7275

perf->byteSndBuf += (perf->pktSndBuf * pktHdrSize);

7245 -

//<

7246 7276

perf->byteAvailSndBuf = (m_config.iSndBufSize - perf->pktSndBuf) * m_config.iMSS;

7247 7277

}

7248 7278

else

@@ -7285,34 +7315,6 @@ void srt::CUDT::bstats(CBytePerfMon *perf, bool clear, bool instantaneous)

7285 7315

perf->byteRcvBuf = 0;

7286 7316

perf->msRcvBuf = 0;

7287 7317

}

7288 - 7289 -

if (clear)

7290 -

{

7291 -

m_stats.traceSndDrop = 0;

7292 -

m_stats.traceRcvDrop = 0;

7293 -

m_stats.traceSndBytesDrop = 0;

7294 -

m_stats.traceRcvBytesDrop = 0;

7295 -

m_stats.traceRcvUndecrypt = 0;

7296 -

m_stats.traceRcvBytesUndecrypt = 0;

7297 -

m_stats.traceBytesSent = m_stats.traceBytesRecv = m_stats.traceBytesRetrans = 0;

7298 -

m_stats.traceBytesSentUniq = m_stats.traceBytesRecvUniq = 0;

7299 -

m_stats.traceSent = m_stats.traceRecv

7300 -

= m_stats.traceSentUniq = m_stats.traceRecvUniq

7301 -

= m_stats.traceSndLoss = m_stats.traceRcvLoss = m_stats.traceRetrans

7302 -

= m_stats.sentACK = m_stats.recvACK = m_stats.sentNAK = m_stats.recvNAK = 0;

7303 -

m_stats.sndDuration = 0;

7304 -

m_stats.traceRcvRetrans = 0;

7305 -

m_stats.traceRcvBelated = 0;

7306 -

m_stats.traceRcvBytesLoss = 0;

7307 - 7308 -

m_stats.sndFilterExtra = 0;

7309 -

m_stats.rcvFilterExtra = 0;

7310 - 7311 -

m_stats.rcvFilterSupply = 0;

7312 -

m_stats.rcvFilterLoss = 0;

7313 - 7314 -

m_stats.tsLastSampleTime = currtime;

7315 -

}

7316 7318

}

7317 7319 7318 7320

bool srt::CUDT::updateCC(ETransmissionEvent evt, const EventVariant arg)


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4