Reland of "Create rtc::AtomicInt POD struct."

Relands https://codereview.webrtc.org/1420043008/ with brace initializers
instead of constructors hoping that they won't introduce static
initializers.

BUG=
R=tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1498953002 .

Cr-Commit-Position: refs/heads/master@{#10920}
This commit is contained in:
Peter Boström
2015-12-07 23:07:01 +01:00
parent 0f490a5b86
commit 84f0970d10
13 changed files with 198 additions and 101 deletions

View File

@ -18,8 +18,7 @@
namespace webrtc {
PacketRouter::PacketRouter() : transport_seq_(0) {
}
PacketRouter::PacketRouter() : transport_seq_({0}) {}
PacketRouter::~PacketRouter() {
RTC_DCHECK(rtp_modules_.empty());
@ -69,11 +68,11 @@ size_t PacketRouter::TimeToSendPadding(size_t bytes_to_send) {
}
void PacketRouter::SetTransportWideSequenceNumber(uint16_t sequence_number) {
rtc::AtomicOps::ReleaseStore(&transport_seq_, sequence_number);
rtc::AtomicInt::ReleaseStore(&transport_seq_, sequence_number);
}
uint16_t PacketRouter::AllocateSequenceNumber() {
int prev_seq = rtc::AtomicOps::AcquireLoad(&transport_seq_);
int prev_seq = rtc::AtomicInt::AcquireLoad(&transport_seq_);
int desired_prev_seq;
int new_seq;
do {
@ -83,7 +82,7 @@ uint16_t PacketRouter::AllocateSequenceNumber() {
// time the CAS operation was executed. Thus, if prev_seq is returned, the
// operation was successful - otherwise we need to retry. Saving the
// return value saves us a load on retry.
prev_seq = rtc::AtomicOps::CompareAndSwap(&transport_seq_, desired_prev_seq,
prev_seq = rtc::AtomicInt::CompareAndSwap(&transport_seq_, desired_prev_seq,
new_seq);
} while (prev_seq != desired_prev_seq);