FakeNetworkInterface: remove lock recursions.

This change removes lock recursions and adds thread annotations.

Bug: webrtc:11567
Change-Id: I28b18256e627f43dc0d01d28452b2bcbf59cebac
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175124
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31271}
This commit is contained in:
Markus Handell
2020-05-14 14:47:12 +02:00
committed by Commit Bot
parent 772b1494a9
commit e7864f5894

View File

@ -43,13 +43,14 @@ class FakeNetworkInterface : public MediaChannel::NetworkInterface,
// Conference mode is a mode where instead of simply forwarding the packets, // Conference mode is a mode where instead of simply forwarding the packets,
// the transport will send multiple copies of the packet with the specified // the transport will send multiple copies of the packet with the specified
// SSRCs. This allows us to simulate receiving media from multiple sources. // SSRCs. This allows us to simulate receiving media from multiple sources.
void SetConferenceMode(bool conf, const std::vector<uint32_t>& ssrcs) { void SetConferenceMode(bool conf, const std::vector<uint32_t>& ssrcs)
RTC_LOCKS_EXCLUDED(crit_) {
rtc::CritScope cs(&crit_); rtc::CritScope cs(&crit_);
conf_ = conf; conf_ = conf;
conf_sent_ssrcs_ = ssrcs; conf_sent_ssrcs_ = ssrcs;
} }
int NumRtpBytes() { int NumRtpBytes() RTC_LOCKS_EXCLUDED(crit_) {
rtc::CritScope cs(&crit_); rtc::CritScope cs(&crit_);
int bytes = 0; int bytes = 0;
for (size_t i = 0; i < rtp_packets_.size(); ++i) { for (size_t i = 0; i < rtp_packets_.size(); ++i) {
@ -58,48 +59,50 @@ class FakeNetworkInterface : public MediaChannel::NetworkInterface,
return bytes; return bytes;
} }
int NumRtpBytes(uint32_t ssrc) { int NumRtpBytes(uint32_t ssrc) RTC_LOCKS_EXCLUDED(crit_) {
rtc::CritScope cs(&crit_); rtc::CritScope cs(&crit_);
int bytes = 0; int bytes = 0;
GetNumRtpBytesAndPackets(ssrc, &bytes, NULL); GetNumRtpBytesAndPackets(ssrc, &bytes, NULL);
return bytes; return bytes;
} }
int NumRtpPackets() { int NumRtpPackets() RTC_LOCKS_EXCLUDED(crit_) {
rtc::CritScope cs(&crit_); rtc::CritScope cs(&crit_);
return static_cast<int>(rtp_packets_.size()); return static_cast<int>(rtp_packets_.size());
} }
int NumRtpPackets(uint32_t ssrc) { int NumRtpPackets(uint32_t ssrc) RTC_LOCKS_EXCLUDED(crit_) {
rtc::CritScope cs(&crit_); rtc::CritScope cs(&crit_);
int packets = 0; int packets = 0;
GetNumRtpBytesAndPackets(ssrc, NULL, &packets); GetNumRtpBytesAndPackets(ssrc, NULL, &packets);
return packets; return packets;
} }
int NumSentSsrcs() { int NumSentSsrcs() RTC_LOCKS_EXCLUDED(crit_) {
rtc::CritScope cs(&crit_); rtc::CritScope cs(&crit_);
return static_cast<int>(sent_ssrcs_.size()); return static_cast<int>(sent_ssrcs_.size());
} }
// Note: callers are responsible for deleting the returned buffer. // Note: callers are responsible for deleting the returned buffer.
const rtc::CopyOnWriteBuffer* GetRtpPacket(int index) { const rtc::CopyOnWriteBuffer* GetRtpPacket(int index)
RTC_LOCKS_EXCLUDED(crit_) {
rtc::CritScope cs(&crit_); rtc::CritScope cs(&crit_);
if (index >= NumRtpPackets()) { if (index >= static_cast<int>(rtp_packets_.size())) {
return NULL; return NULL;
} }
return new rtc::CopyOnWriteBuffer(rtp_packets_[index]); return new rtc::CopyOnWriteBuffer(rtp_packets_[index]);
} }
int NumRtcpPackets() { int NumRtcpPackets() RTC_LOCKS_EXCLUDED(crit_) {
rtc::CritScope cs(&crit_); rtc::CritScope cs(&crit_);
return static_cast<int>(rtcp_packets_.size()); return static_cast<int>(rtcp_packets_.size());
} }
// Note: callers are responsible for deleting the returned buffer. // Note: callers are responsible for deleting the returned buffer.
const rtc::CopyOnWriteBuffer* GetRtcpPacket(int index) { const rtc::CopyOnWriteBuffer* GetRtcpPacket(int index)
RTC_LOCKS_EXCLUDED(crit_) {
rtc::CritScope cs(&crit_); rtc::CritScope cs(&crit_);
if (index >= NumRtcpPackets()) { if (index >= static_cast<int>(rtcp_packets_.size())) {
return NULL; return NULL;
} }
return new rtc::CopyOnWriteBuffer(rtcp_packets_[index]); return new rtc::CopyOnWriteBuffer(rtcp_packets_[index]);
@ -112,7 +115,8 @@ class FakeNetworkInterface : public MediaChannel::NetworkInterface,
protected: protected:
virtual bool SendPacket(rtc::CopyOnWriteBuffer* packet, virtual bool SendPacket(rtc::CopyOnWriteBuffer* packet,
const rtc::PacketOptions& options) { const rtc::PacketOptions& options)
RTC_LOCKS_EXCLUDED(crit_) {
rtc::CritScope cs(&crit_); rtc::CritScope cs(&crit_);
uint32_t cur_ssrc = 0; uint32_t cur_ssrc = 0;
@ -137,7 +141,8 @@ class FakeNetworkInterface : public MediaChannel::NetworkInterface,
} }
virtual bool SendRtcp(rtc::CopyOnWriteBuffer* packet, virtual bool SendRtcp(rtc::CopyOnWriteBuffer* packet,
const rtc::PacketOptions& options) { const rtc::PacketOptions& options)
RTC_LOCKS_EXCLUDED(crit_) {
rtc::CritScope cs(&crit_); rtc::CritScope cs(&crit_);
rtcp_packets_.push_back(*packet); rtcp_packets_.push_back(*packet);
options_ = options; options_ = options;