A RetroSearch Logo

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

Search Query:

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

[core] Improved 'no room to store' log message (#1909) · Haivision/srt@8830943 · GitHub

File tree Expand file treeCollapse file tree 3 files changed

+90

-6

lines changed

Filter options

Expand file treeCollapse file tree 3 files changed

+90

-6

lines changed Original file line number Diff line number Diff line change

@@ -1722,6 +1722,75 @@ unsigned CRcvBuffer::getRcvAvgPayloadSize() const

1722 1722

return m_uAvgPayloadSz;

1723 1723

}

1724 1724 1725 +

CRcvBuffer::ReadingState CRcvBuffer::debugGetReadingState() const

1726 +

{

1727 +

ReadingState readstate;

1728 + 1729 +

readstate.iNumAcknowledged = 0;

1730 +

readstate.iNumUnacknowledged = m_iMaxPos;

1731 + 1732 +

if ((NULL != m_pUnit[m_iStartPos]) && (m_pUnit[m_iStartPos]->m_iFlag == CUnit::GOOD))

1733 +

{

1734 +

if (m_tsbpd.isEnabled())

1735 +

readstate.tsStart = m_tsbpd.getPktTsbPdTime(m_pUnit[m_iStartPos]->m_Packet.getMsgTimeStamp());

1736 + 1737 +

readstate.iNumAcknowledged = m_iLastAckPos > m_iStartPos

1738 +

? m_iLastAckPos - m_iStartPos

1739 +

: m_iLastAckPos + (m_iSize - m_iStartPos);

1740 +

}

1741 + 1742 +

// All further stats are valid if TSBPD is enabled.

1743 +

if (!m_tsbpd.isEnabled())

1744 +

return readstate;

1745 + 1746 +

// m_iLastAckPos points to the first unacknowledged packet

1747 +

const int iLastAckPos = (m_iLastAckPos - 1) % m_iSize;

1748 +

if (m_iLastAckPos != m_iStartPos && (NULL != m_pUnit[iLastAckPos]) && (m_pUnit[iLastAckPos]->m_iFlag == CUnit::GOOD))

1749 +

{

1750 +

readstate.tsLastAck = m_tsbpd.getPktTsbPdTime(m_pUnit[iLastAckPos]->m_Packet.getMsgTimeStamp());

1751 +

}

1752 + 1753 +

const int iEndPos = (m_iLastAckPos + m_iMaxPos - 1) % m_iSize;

1754 +

if (m_iMaxPos == 0)

1755 +

{

1756 +

readstate.tsEnd = readstate.tsLastAck;

1757 +

}

1758 +

else if ((NULL != m_pUnit[iEndPos]) && (m_pUnit[iEndPos]->m_iFlag == CUnit::GOOD))

1759 +

{

1760 +

readstate.tsEnd = m_tsbpd.getPktTsbPdTime(m_pUnit[iEndPos]->m_Packet.getMsgTimeStamp());

1761 +

}

1762 + 1763 +

return readstate;

1764 +

}

1765 + 1766 +

string CRcvBuffer::strFullnessState(const time_point& tsNow) const

1767 +

{

1768 +

const ReadingState bufstate = debugGetReadingState();

1769 +

stringstream ss;

1770 + 1771 +

ss << "Space avail " << getAvailBufSize() << "/" << m_iSize;

1772 +

ss << " pkts. Packets ACKed: " << bufstate.iNumAcknowledged;

1773 +

if (!is_zero(bufstate.tsStart) && !is_zero(bufstate.tsLastAck))

1774 +

{

1775 +

ss << " (TSBPD ready in ";

1776 +

ss << count_milliseconds(bufstate.tsStart - tsNow);

1777 +

ss << " : ";

1778 +

ss << count_milliseconds(bufstate.tsLastAck - tsNow);

1779 +

ss << " ms)";

1780 +

}

1781 + 1782 +

ss << ", not ACKed: " << bufstate.iNumUnacknowledged;

1783 +

if (!is_zero(bufstate.tsStart) && !is_zero(bufstate.tsEnd))

1784 +

{

1785 +

ss << ", timespan ";

1786 +

ss << count_milliseconds(bufstate.tsEnd - bufstate.tsStart);

1787 +

ss << " ms";

1788 +

}

1789 + 1790 +

ss << ". " SRT_SYNC_CLOCK_STR " drift " << getDrift() / 1000 << " ms.";

1791 +

return ss.str();

1792 +

}

1793 + 1725 1794

void CRcvBuffer::dropMsg(int32_t msgno, bool using_rexmit_flag)

1726 1795

{

1727 1796

for (int i = m_iStartPos, n = shift(m_iLastAckPos, m_iMaxPos); i != n; i = shiftFwd(i))

Original file line number Diff line number Diff line change

@@ -348,6 +348,21 @@ class CRcvBuffer

348 348

/// @return size (bytes) of payload size

349 349

unsigned getRcvAvgPayloadSize() const;

350 350 351 +

struct ReadingState

352 +

{

353 +

time_point tsStart;

354 +

time_point tsLastAck;

355 +

time_point tsEnd;

356 +

int iNumAcknowledged;

357 +

int iNumUnacknowledged;

358 +

};

359 + 360 +

ReadingState debugGetReadingState() const;

361 + 362 +

/// Form a string of the current buffer fullness state.

363 +

/// number of packets acknowledged, TSBPD readiness, etc.

364 +

std::string strFullnessState(const time_point& tsNow) const;

365 + 351 366

/// Mark the message to be dropped from the message list.

352 367

/// @param [in] msgno message number.

353 368

/// @param [in] using_rexmit_flag whether the MSGNO field uses rexmit flag (if not, one more bit is part of the

@@ -462,6 +477,7 @@ class CRcvBuffer

462 477

bool getRcvReadyMsg(time_point& w_tsbpdtime, int32_t& w_curpktseq, int upto);

463 478 464 479

public:

480 +

/// @brief Get clock drift in microseconds.

465 481

int64_t getDrift() const { return m_tsbpd.drift(); }

466 482 467 483

public:

Original file line number Diff line number Diff line change

@@ -9622,12 +9622,11 @@ int CUDT::processData(CUnit* in_unit)

9622 9622

}

9623 9623

else

9624 9624

{

9625 -

LOGC(qrlog.Warn, log << CONID() << "No room to store incoming packet: offset="

9626 -

<< offset << " avail=" << avail_bufsize

9627 -

<< " ack.seq=" << m_iRcvLastSkipAck << " pkt.seq=" << rpkt.m_iSeqNo

9628 -

<< " rcv-remain=" << m_pRcvBuffer->debugGetSize()

9629 -

<< " drift=" << m_pRcvBuffer->getDrift()

9630 -

);

9625 +

LOGC(qrlog.Warn, log << CONID() << "No room to store incoming packet seqno " << rpkt.m_iSeqNo

9626 +

<< ", insert offset " << offset << ". "

9627 +

<< m_pRcvBuffer->strFullnessState(steady_clock::now())

9628 +

);

9629 + 9631 9630

return -1;

9632 9631

}

9633 9632

}

You can’t perform that action at this time.


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