mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-20 00:57:49 +01:00
Refactor NetworkTester to use rtc::ReceivedPackets
Instead of using raw pointers. Bug: webrtc:11943 Change-Id: I296fb4f234938126f834b4a6ac5e64d31b191d34 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/331280 Commit-Queue: Per Kjellander <perkj@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/main@{#41370}
This commit is contained in:
parent
14a7e8b300
commit
0b11bd4c2e
3 changed files with 21 additions and 18 deletions
|
@ -43,6 +43,7 @@ if (rtc_enable_protobuf) {
|
||||||
"../../api/task_queue",
|
"../../api/task_queue",
|
||||||
"../../api/task_queue:default_task_queue_factory",
|
"../../api/task_queue:default_task_queue_factory",
|
||||||
"../../api/task_queue:pending_task_safety_flag",
|
"../../api/task_queue:pending_task_safety_flag",
|
||||||
|
"../../api/units:timestamp",
|
||||||
"../../p2p:rtc_p2p",
|
"../../p2p:rtc_p2p",
|
||||||
"../../rtc_base:async_packet_socket",
|
"../../rtc_base:async_packet_socket",
|
||||||
"../../rtc_base:checks",
|
"../../rtc_base:checks",
|
||||||
|
@ -55,9 +56,9 @@ if (rtc_enable_protobuf) {
|
||||||
"../../rtc_base:socket_server",
|
"../../rtc_base:socket_server",
|
||||||
"../../rtc_base:threading",
|
"../../rtc_base:threading",
|
||||||
"../../rtc_base:timeutils",
|
"../../rtc_base:timeutils",
|
||||||
|
"../../rtc_base/network:received_packet",
|
||||||
"../../rtc_base/synchronization:mutex",
|
"../../rtc_base/synchronization:mutex",
|
||||||
"../../rtc_base/system:no_unique_address",
|
"../../rtc_base/system:no_unique_address",
|
||||||
"../../rtc_base/third_party/sigslot",
|
|
||||||
]
|
]
|
||||||
absl_deps = [
|
absl_deps = [
|
||||||
"//third_party/abseil-cpp/absl/functional:any_invocable",
|
"//third_party/abseil-cpp/absl/functional:any_invocable",
|
||||||
|
|
|
@ -13,10 +13,12 @@
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
#include "absl/types/optional.h"
|
#include "absl/types/optional.h"
|
||||||
|
#include "api/units/timestamp.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
#include "rtc_base/internal/default_socket_server.h"
|
#include "rtc_base/internal/default_socket_server.h"
|
||||||
#include "rtc_base/ip_address.h"
|
#include "rtc_base/ip_address.h"
|
||||||
#include "rtc_base/logging.h"
|
#include "rtc_base/logging.h"
|
||||||
|
#include "rtc_base/network/received_packet.h"
|
||||||
#include "rtc_base/thread.h"
|
#include "rtc_base/thread.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
@ -44,7 +46,10 @@ TestController::TestController(int min_port,
|
||||||
std::unique_ptr<rtc::AsyncPacketSocket>(socket_factory_.CreateUdpSocket(
|
std::unique_ptr<rtc::AsyncPacketSocket>(socket_factory_.CreateUdpSocket(
|
||||||
rtc::SocketAddress(rtc::GetAnyIP(AF_INET), 0), min_port, max_port));
|
rtc::SocketAddress(rtc::GetAnyIP(AF_INET), 0), min_port, max_port));
|
||||||
RTC_CHECK(udp_socket_ != nullptr);
|
RTC_CHECK(udp_socket_ != nullptr);
|
||||||
udp_socket_->SignalReadPacket.connect(this, &TestController::OnReadPacket);
|
udp_socket_->RegisterReceivedPacketCallback(
|
||||||
|
[&](rtc::AsyncPacketSocket* socket, const rtc::ReceivedPacket& packet) {
|
||||||
|
OnReadPacket(socket, packet);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,14 +108,13 @@ bool TestController::IsTestDone() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestController::OnReadPacket(rtc::AsyncPacketSocket* socket,
|
void TestController::OnReadPacket(rtc::AsyncPacketSocket* socket,
|
||||||
const char* data,
|
const rtc::ReceivedPacket& received_packet) {
|
||||||
size_t len,
|
|
||||||
const rtc::SocketAddress& remote_addr,
|
|
||||||
const int64_t& packet_time_us) {
|
|
||||||
RTC_DCHECK_RUN_ON(packet_sender_thread_.get());
|
RTC_DCHECK_RUN_ON(packet_sender_thread_.get());
|
||||||
RTC_LOG(LS_VERBOSE) << "OnReadPacket";
|
RTC_LOG(LS_VERBOSE) << "OnReadPacket";
|
||||||
size_t packet_size = data[0];
|
size_t packet_size = received_packet.payload()[0];
|
||||||
std::string receive_data(&data[1], packet_size);
|
std::string receive_data(
|
||||||
|
reinterpret_cast<const char*>(&received_packet.payload()[1]),
|
||||||
|
packet_size);
|
||||||
NetworkTesterPacket packet;
|
NetworkTesterPacket packet;
|
||||||
packet.ParseFromString(receive_data);
|
packet.ParseFromString(receive_data);
|
||||||
RTC_CHECK(packet.has_type());
|
RTC_CHECK(packet.has_type());
|
||||||
|
@ -118,7 +122,7 @@ void TestController::OnReadPacket(rtc::AsyncPacketSocket* socket,
|
||||||
case NetworkTesterPacket::HAND_SHAKING: {
|
case NetworkTesterPacket::HAND_SHAKING: {
|
||||||
NetworkTesterPacket packet;
|
NetworkTesterPacket packet;
|
||||||
packet.set_type(NetworkTesterPacket::TEST_START);
|
packet.set_type(NetworkTesterPacket::TEST_START);
|
||||||
remote_address_ = remote_addr;
|
remote_address_ = received_packet.source_address();
|
||||||
SendData(packet, absl::nullopt);
|
SendData(packet, absl::nullopt);
|
||||||
packet_sender_.reset(new PacketSender(this, packet_sender_thread_.get(),
|
packet_sender_.reset(new PacketSender(this, packet_sender_thread_.get(),
|
||||||
task_safety_flag_,
|
task_safety_flag_,
|
||||||
|
@ -140,8 +144,9 @@ void TestController::OnReadPacket(rtc::AsyncPacketSocket* socket,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NetworkTesterPacket::TEST_DATA: {
|
case NetworkTesterPacket::TEST_DATA: {
|
||||||
packet.set_arrival_timestamp(packet_time_us);
|
packet.set_arrival_timestamp(
|
||||||
packet.set_packet_size(len);
|
received_packet.arrival_time().value_or(Timestamp::Zero()).us());
|
||||||
|
packet.set_packet_size(received_packet.payload().size());
|
||||||
packet_logger_.LogPacket(packet);
|
packet_logger_.LogPacket(packet);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,11 +22,11 @@
|
||||||
#include "api/sequence_checker.h"
|
#include "api/sequence_checker.h"
|
||||||
#include "p2p/base/basic_packet_socket_factory.h"
|
#include "p2p/base/basic_packet_socket_factory.h"
|
||||||
#include "rtc_base/async_packet_socket.h"
|
#include "rtc_base/async_packet_socket.h"
|
||||||
|
#include "rtc_base/network/received_packet.h"
|
||||||
#include "rtc_base/socket_address.h"
|
#include "rtc_base/socket_address.h"
|
||||||
#include "rtc_base/socket_server.h"
|
#include "rtc_base/socket_server.h"
|
||||||
#include "rtc_base/synchronization/mutex.h"
|
#include "rtc_base/synchronization/mutex.h"
|
||||||
#include "rtc_base/system/no_unique_address.h"
|
#include "rtc_base/system/no_unique_address.h"
|
||||||
#include "rtc_base/third_party/sigslot/sigslot.h"
|
|
||||||
#include "rtc_base/thread.h"
|
#include "rtc_base/thread.h"
|
||||||
#include "rtc_base/thread_annotations.h"
|
#include "rtc_base/thread_annotations.h"
|
||||||
#include "rtc_tools/network_tester/packet_logger.h"
|
#include "rtc_tools/network_tester/packet_logger.h"
|
||||||
|
@ -43,13 +43,13 @@ namespace webrtc {
|
||||||
|
|
||||||
constexpr size_t kEthernetMtu = 1500;
|
constexpr size_t kEthernetMtu = 1500;
|
||||||
|
|
||||||
class TestController : public sigslot::has_slots<> {
|
class TestController {
|
||||||
public:
|
public:
|
||||||
TestController(int min_port,
|
TestController(int min_port,
|
||||||
int max_port,
|
int max_port,
|
||||||
const std::string& config_file_path,
|
const std::string& config_file_path,
|
||||||
const std::string& log_file_path);
|
const std::string& log_file_path);
|
||||||
~TestController() override;
|
~TestController();
|
||||||
|
|
||||||
TestController(const TestController&) = delete;
|
TestController(const TestController&) = delete;
|
||||||
TestController& operator=(const TestController&) = delete;
|
TestController& operator=(const TestController&) = delete;
|
||||||
|
@ -65,10 +65,7 @@ class TestController : public sigslot::has_slots<> {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void OnReadPacket(rtc::AsyncPacketSocket* socket,
|
void OnReadPacket(rtc::AsyncPacketSocket* socket,
|
||||||
const char* data,
|
const rtc::ReceivedPacket& received_packet);
|
||||||
size_t len,
|
|
||||||
const rtc::SocketAddress& remote_addr,
|
|
||||||
const int64_t& packet_time_us);
|
|
||||||
RTC_NO_UNIQUE_ADDRESS SequenceChecker test_controller_thread_checker_;
|
RTC_NO_UNIQUE_ADDRESS SequenceChecker test_controller_thread_checker_;
|
||||||
std::unique_ptr<rtc::SocketServer> socket_server_;
|
std::unique_ptr<rtc::SocketServer> socket_server_;
|
||||||
std::unique_ptr<rtc::Thread> packet_sender_thread_;
|
std::unique_ptr<rtc::Thread> packet_sender_thread_;
|
||||||
|
|
Loading…
Reference in a new issue