xref: /aosp_15_r20/external/webrtc/pc/data_channel_utils.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker  *  Copyright 2020 The WebRTC project authors. All Rights Reserved.
3*d9f75844SAndroid Build Coastguard Worker  *
4*d9f75844SAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker  */
10*d9f75844SAndroid Build Coastguard Worker 
11*d9f75844SAndroid Build Coastguard Worker #include "pc/data_channel_utils.h"
12*d9f75844SAndroid Build Coastguard Worker 
13*d9f75844SAndroid Build Coastguard Worker #include <utility>
14*d9f75844SAndroid Build Coastguard Worker 
15*d9f75844SAndroid Build Coastguard Worker #include "rtc_base/checks.h"
16*d9f75844SAndroid Build Coastguard Worker 
17*d9f75844SAndroid Build Coastguard Worker namespace webrtc {
18*d9f75844SAndroid Build Coastguard Worker 
Empty() const19*d9f75844SAndroid Build Coastguard Worker bool PacketQueue::Empty() const {
20*d9f75844SAndroid Build Coastguard Worker   return packets_.empty();
21*d9f75844SAndroid Build Coastguard Worker }
22*d9f75844SAndroid Build Coastguard Worker 
PopFront()23*d9f75844SAndroid Build Coastguard Worker std::unique_ptr<DataBuffer> PacketQueue::PopFront() {
24*d9f75844SAndroid Build Coastguard Worker   RTC_DCHECK(!packets_.empty());
25*d9f75844SAndroid Build Coastguard Worker   byte_count_ -= packets_.front()->size();
26*d9f75844SAndroid Build Coastguard Worker   std::unique_ptr<DataBuffer> packet = std::move(packets_.front());
27*d9f75844SAndroid Build Coastguard Worker   packets_.pop_front();
28*d9f75844SAndroid Build Coastguard Worker   return packet;
29*d9f75844SAndroid Build Coastguard Worker }
30*d9f75844SAndroid Build Coastguard Worker 
PushFront(std::unique_ptr<DataBuffer> packet)31*d9f75844SAndroid Build Coastguard Worker void PacketQueue::PushFront(std::unique_ptr<DataBuffer> packet) {
32*d9f75844SAndroid Build Coastguard Worker   byte_count_ += packet->size();
33*d9f75844SAndroid Build Coastguard Worker   packets_.push_front(std::move(packet));
34*d9f75844SAndroid Build Coastguard Worker }
35*d9f75844SAndroid Build Coastguard Worker 
PushBack(std::unique_ptr<DataBuffer> packet)36*d9f75844SAndroid Build Coastguard Worker void PacketQueue::PushBack(std::unique_ptr<DataBuffer> packet) {
37*d9f75844SAndroid Build Coastguard Worker   byte_count_ += packet->size();
38*d9f75844SAndroid Build Coastguard Worker   packets_.push_back(std::move(packet));
39*d9f75844SAndroid Build Coastguard Worker }
40*d9f75844SAndroid Build Coastguard Worker 
Clear()41*d9f75844SAndroid Build Coastguard Worker void PacketQueue::Clear() {
42*d9f75844SAndroid Build Coastguard Worker   packets_.clear();
43*d9f75844SAndroid Build Coastguard Worker   byte_count_ = 0;
44*d9f75844SAndroid Build Coastguard Worker }
45*d9f75844SAndroid Build Coastguard Worker 
Swap(PacketQueue * other)46*d9f75844SAndroid Build Coastguard Worker void PacketQueue::Swap(PacketQueue* other) {
47*d9f75844SAndroid Build Coastguard Worker   size_t other_byte_count = other->byte_count_;
48*d9f75844SAndroid Build Coastguard Worker   other->byte_count_ = byte_count_;
49*d9f75844SAndroid Build Coastguard Worker   byte_count_ = other_byte_count;
50*d9f75844SAndroid Build Coastguard Worker 
51*d9f75844SAndroid Build Coastguard Worker   other->packets_.swap(packets_);
52*d9f75844SAndroid Build Coastguard Worker }
53*d9f75844SAndroid Build Coastguard Worker 
54*d9f75844SAndroid Build Coastguard Worker }  // namespace webrtc
55