Skip to content

Common receiver buffer for groups#3286

Draft
ethouris wants to merge 1 commit intoHaivision:devfrom
ethouris:dev-groups-common-receiver
Draft

Common receiver buffer for groups#3286
ethouris wants to merge 1 commit intoHaivision:devfrom
ethouris:dev-groups-common-receiver

Conversation

@ethouris
Copy link
Collaborator

Major changes:

  1. The member sockets no longer keep the receiver buffer - handled the case when it can be NULL
  2. Member sockets are themselves never read-ready and reading from them is not allowed.
  3. The API-called reading of the data from a group redirects to groupwise reading. This function reads directly from the receiver buffer.
  4. Incoming packets from the particular socket are redirected to the group and finally they land in the group's receiver buffer
  5. Loss handling uses specific procedures so that asymmetric losses are sealed and symmetric losses are notified only on full link coverage or with excessive span.
  6. The TSBPD thread is also one for a group.

Missing improvements:

The new receiver buffer unit procedure is required because the current solution requires buffer units provided by a multiplexer to stay in the buffer until read by the application, which cannot happen after the multiplexer is deleted.

Minor changes:

  1. Changes and improvements in the documentation
  2. Removed optional SRT_MSGCTRL object in reception function
  3. Adjusted tests to the changed internals

Comment on lines +1163 to +1172
if (CSeqNo::seqcmp(seqno, last_seq) > 0)
seqno = last_seq;

// Skipping the sequence number of the new contiguous region
std::pair<int, int> drop = m_pRcvBuffer->dropUpTo(seqno);

// XXX Temporary solution, but these numbers were split for a reason.
iDropCnt = drop.first + drop.second;

/* XXX not sure how to stats.

Check notice

Code scanning / CodeQL

Commented-out code Note

This comment appears to contain commented-out code.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant