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 #ifndef PC_DATA_CHANNEL_UTILS_H_ 12*d9f75844SAndroid Build Coastguard Worker #define PC_DATA_CHANNEL_UTILS_H_ 13*d9f75844SAndroid Build Coastguard Worker 14*d9f75844SAndroid Build Coastguard Worker #include <stddef.h> 15*d9f75844SAndroid Build Coastguard Worker #include <stdint.h> 16*d9f75844SAndroid Build Coastguard Worker #include <deque> 17*d9f75844SAndroid Build Coastguard Worker #include <memory> 18*d9f75844SAndroid Build Coastguard Worker #include <string> 19*d9f75844SAndroid Build Coastguard Worker #include <utility> 20*d9f75844SAndroid Build Coastguard Worker 21*d9f75844SAndroid Build Coastguard Worker #include "api/data_channel_interface.h" 22*d9f75844SAndroid Build Coastguard Worker #include "media/base/media_engine.h" 23*d9f75844SAndroid Build Coastguard Worker 24*d9f75844SAndroid Build Coastguard Worker namespace webrtc { 25*d9f75844SAndroid Build Coastguard Worker 26*d9f75844SAndroid Build Coastguard Worker // A packet queue which tracks the total queued bytes. Queued packets are 27*d9f75844SAndroid Build Coastguard Worker // owned by this class. 28*d9f75844SAndroid Build Coastguard Worker class PacketQueue final { 29*d9f75844SAndroid Build Coastguard Worker public: byte_count()30*d9f75844SAndroid Build Coastguard Worker size_t byte_count() const { return byte_count_; } 31*d9f75844SAndroid Build Coastguard Worker 32*d9f75844SAndroid Build Coastguard Worker bool Empty() const; 33*d9f75844SAndroid Build Coastguard Worker 34*d9f75844SAndroid Build Coastguard Worker std::unique_ptr<DataBuffer> PopFront(); 35*d9f75844SAndroid Build Coastguard Worker 36*d9f75844SAndroid Build Coastguard Worker void PushFront(std::unique_ptr<DataBuffer> packet); 37*d9f75844SAndroid Build Coastguard Worker void PushBack(std::unique_ptr<DataBuffer> packet); 38*d9f75844SAndroid Build Coastguard Worker 39*d9f75844SAndroid Build Coastguard Worker void Clear(); 40*d9f75844SAndroid Build Coastguard Worker 41*d9f75844SAndroid Build Coastguard Worker void Swap(PacketQueue* other); 42*d9f75844SAndroid Build Coastguard Worker 43*d9f75844SAndroid Build Coastguard Worker private: 44*d9f75844SAndroid Build Coastguard Worker std::deque<std::unique_ptr<DataBuffer>> packets_; 45*d9f75844SAndroid Build Coastguard Worker size_t byte_count_ = 0; 46*d9f75844SAndroid Build Coastguard Worker }; 47*d9f75844SAndroid Build Coastguard Worker 48*d9f75844SAndroid Build Coastguard Worker struct DataChannelStats { 49*d9f75844SAndroid Build Coastguard Worker int internal_id; 50*d9f75844SAndroid Build Coastguard Worker int id; 51*d9f75844SAndroid Build Coastguard Worker std::string label; 52*d9f75844SAndroid Build Coastguard Worker std::string protocol; 53*d9f75844SAndroid Build Coastguard Worker DataChannelInterface::DataState state; 54*d9f75844SAndroid Build Coastguard Worker uint32_t messages_sent; 55*d9f75844SAndroid Build Coastguard Worker uint32_t messages_received; 56*d9f75844SAndroid Build Coastguard Worker uint64_t bytes_sent; 57*d9f75844SAndroid Build Coastguard Worker uint64_t bytes_received; 58*d9f75844SAndroid Build Coastguard Worker }; 59*d9f75844SAndroid Build Coastguard Worker 60*d9f75844SAndroid Build Coastguard Worker } // namespace webrtc 61*d9f75844SAndroid Build Coastguard Worker 62*d9f75844SAndroid Build Coastguard Worker #endif // PC_DATA_CHANNEL_UTILS_H_ 63