Skip to content

Commit

Permalink
Merge pull request #956 from paullouisageneau/sync-rtcpnackresponder-…
Browse files Browse the repository at this point in the history
…storage

Add synchronization to RtcpNackResponder::Storage
  • Loading branch information
paullouisageneau authored Sep 1, 2023
2 parents 2223434 + 4e9bb1a commit 6a48c19
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 1 deletion.
2 changes: 1 addition & 1 deletion include/rtc/rtcpnackresponder.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ class RTC_CPP_EXPORT RtcpNackResponder final : public MediaHandlerElement {
shared_ptr<Element> oldest = nullptr;
/// Newest packet in storage
shared_ptr<Element> newest = nullptr;

/// Inner storage
std::unordered_map<uint16_t, shared_ptr<Element>> storage{};
std::mutex mutex;

/// Maximum storage size
const unsigned maximumSize;
Expand Down
2 changes: 2 additions & 0 deletions src/rtcpnackresponder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ RtcpNackResponder::Storage::Storage(unsigned _maximumSize) : maximumSize(_maximu
}

optional<binary_ptr> RtcpNackResponder::Storage::get(uint16_t sequenceNumber) {
std::lock_guard lock(mutex);
auto position = storage.find(sequenceNumber);
return position != storage.end() ? std::make_optional(storage.at(sequenceNumber)->packet)
: nullopt;
Expand All @@ -40,6 +41,7 @@ void RtcpNackResponder::Storage::store(binary_ptr packet) {
auto rtp = reinterpret_cast<RtpHeader *>(packet->data());
auto sequenceNumber = rtp->seqNumber();

std::lock_guard lock(mutex);
assert((storage.empty() && !oldest && !newest) || (!storage.empty() && oldest && newest));

if (size() == 0) {
Expand Down

0 comments on commit 6a48c19

Please sign in to comment.